Android动画-旋转、平移、放缩和渐变

来源:互联网 发布:神枪手红包软件 编辑:程序博客网 时间:2024/05/21 21:05

转载:http://yidongkaifa.iteye.com/blog/1788996

Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。下面就讲一下Tweene Animations。主要类:Animation  动画AlphaAnimation 渐变透明度RotateAnimation 画面旋转ScaleAnimation 渐变尺寸缩放TranslateAnimation 位置移动AnimationSet 动画集一.AlphaAnimation其中AlphaAnimation类第一个参数fromAlpha表示动画起始时的透明度, 第二个参数toAlpha表示动画结束时的透明度。setDuration用来设置动画持续时间。二.RotateAnimation其中RotateAnimation类第一个参数fromDegrees表示动画起始时的角度, 第二个参数toDegrees表示动画结束时的角度。另外还可以设置伸缩模式pivotXType、pivotYType, 伸缩动画相对于x,y 坐标的开始位置pivotXValue、pivotYValue等。三.ScaleAnimationScaleAnimation类中第一个参数fromX ,第二个参数toX:分别是动画起始、结束时X坐标上的伸缩尺寸。第三个参数fromY ,第四个参数toY:分别是动画起始、结束时Y坐标上的伸缩尺寸。另外还可以设置伸缩模式pivotXType、pivotYType, 伸缩动画相对于x,y 坐标的开始位置pivotXValue、pivotYValue等。四.TranslateAnimation第一个参数fromXDelta ,第二个参数toXDelta:分别是动画起始、结束时X坐标。第三个参数fromYDelta,第四个参数toYDelta:分别是动画起始、结束时Y坐标。

java代码:

public class Animations_Activity extends Activity {      private Button button1;      private Button button2;      private Button button3;      private Button button4;      private Button button5;      private ImageView imageView;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_animations_);          button1=(Button)findViewById(R.id.button_alpha);          button2=(Button)findViewById(R.id.button_rotate);          button3=(Button)findViewById(R.id.button_scale);          button4=(Button)findViewById(R.id.button_translate);          button5=(Button)findViewById(R.id.button_alpha_translate);          imageView=(ImageView)findViewById(R.id.imageview);          button1.setOnClickListener(new MyButton());          button2.setOnClickListener(new MyButton());          button3.setOnClickListener(new MyButton());          button4.setOnClickListener(new MyButton());          button5.setOnClickListener(new MyButton());      }      class MyButton implements OnClickListener{          @Override          public void onClick(View arg0) {              // TODO Auto-generated method stub              switch (arg0.getId()) {              case R.id.button_alpha:                  Alpha();                  break;              case R.id.button_rotate:                  Rotata();                  break;              case R.id.button_scale:                  Scale();                  break;              case R.id.button_translate:                  Translate();                  break;              case R.id.button_alpha_translate:                  Alpha_Translate();                  break;              default:                  break;              }          }      }      /*      * 1.创建一个AnimationSet对象,该对象存储的是动画的集合      * 2.根据需要创建相应的Animation对象      * 3.根据动画的需求,为Animation对象设置相应的数据(即执行效果)      * 4.奖Animation对象添加到AnimationSet对象当中      * 5.使用控件对象开始执行AnimationSet      */      public void Alpha() {          AnimationSet animationSet=new AnimationSet(true);          AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);          alphaAnimation.setDuration(2000);          animationSet.addAnimation(alphaAnimation);          imageView.startAnimation(animationSet);      }      public void Rotata(){          AnimationSet animationSet=new AnimationSet(true);          //后面的四个参数定义的是旋转的圆心位置          RotateAnimation rotateAnimation=new RotateAnimation(                  0, 360,                   Animation.RELATIVE_TO_PARENT, 1f,                  Animation.RELATIVE_TO_PARENT, 0f);          rotateAnimation.setDuration(2000);          animationSet.addAnimation(rotateAnimation);          imageView.startAnimation(animationSet);      }      public void Scale() {          AnimationSet animationSet=new AnimationSet(true);          ScaleAnimation scaleAnimation=new ScaleAnimation(                  1, 0.1f, 1, 0.1f,                   Animation.RELATIVE_TO_SELF, 0.5f,                   Animation.RELATIVE_TO_SELF, 0.5f);          scaleAnimation.setDuration(2000);          animationSet.addAnimation(scaleAnimation);          imageView.startAnimation(scaleAnimation);      }      public void Translate() {          AnimationSet animationSet=new AnimationSet(true);          TranslateAnimation translateAnimation=new TranslateAnimation(                  Animation.RELATIVE_TO_SELF, 0f,  //X轴的开始位置                  Animation.RELATIVE_TO_SELF, 0.5f,  //X轴的结束位置                  Animation.RELATIVE_TO_SELF, 0f,  //Y轴的开始位置                  Animation.RELATIVE_TO_SELF, 1.0f);  //Y轴的结束位置          translateAnimation.setDuration(2000);          animationSet.addAnimation(translateAnimation);          /*          * 第一行的设置如果为true,则动画执行完之后效果定格在执行完之后的状态          * 第二行的设置如果为false,则动画执行完之后效果定格在执行完之后的状态          * 第三行设置的是一个long类型的值,是指动画延迟多少毫秒之后执行          * 第四行定义的是动画重复几次执行          */          animationSet.setFillAfter(true);          animationSet.setFillBefore(false);          animationSet.setStartOffset(2000);          animationSet.setRepeatCount(3);          imageView.startAnimation(animationSet);      }      public void Alpha_Translate() {          AnimationSet animationSet=new AnimationSet(true);          AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);          alphaAnimation.setDuration(2000);          animationSet.addAnimation(alphaAnimation);          TranslateAnimation translateAnimation=new TranslateAnimation(                  Animation.RELATIVE_TO_SELF, 0f,  //X轴的开始位置                  Animation.RELATIVE_TO_SELF, 0.5f,  //X轴的结束位置                  Animation.RELATIVE_TO_SELF, 0f,  //Y轴的开始位置                  Animation.RELATIVE_TO_SELF, 1.0f);  //Y轴的结束位置          translateAnimation.setDuration(2000);          animationSet.addAnimation(translateAnimation);          imageView.startAnimation(animationSet);      }      @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.activity_animations_, menu);          return true;      }  }  
0 0