首页 > 代码库 > android ScaleAnimation类:尺寸变化动画类

android ScaleAnimation类:尺寸变化动画类

Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, TranslateAnimation.今天我想讲解的是TranslateAnimation这个动画效果。也是本人在做一个移动图片的动画效果的项目时,遇到了一些问题。在网上查了很多资料,搞了好几天。终于明白怎么使用这个TranslateAnimation,在本文中记录下来,以便以后忘记了可以查阅。

http://gundumw100.iteye.com/category/156622

9.4  ScaleAnimation类:尺寸变化动画类

ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类。ScaleAnimation类中的很多方法都与Animation类一致,该类中最常用的方法便是ScaleAnimation构造方法。

【基本语法】public ScaleAnimation (float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

参数说明

fromX:起始X坐标上的伸缩尺寸。

toX:结束X坐标上的伸缩尺寸。

fromY:起始Y坐标上的伸缩尺寸。

toY:结束Y坐标上的伸缩尺寸。

pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotXValue:X坐标的伸缩值。

pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotYValue:Y坐标的伸缩值。

【实例演示】下面通过代码来演示如何设置一个简单的尺寸变化动画效果。

  1. public class firstActivity extends Activity {  
  2. /** Called when the activity is first created. */  
  3. @Override  
  4. public void onCreate(Bundle savedInstanceState) {           //重载onCreate方法  
  5.     super.onCreate(savedInstanceState);  
  6.     setContentView(R.layout.main);  
  7.  
  8.     final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象  
  9.     Button btn1=(Button)findViewById(R.id.button1);         //按钮对象  
  10.     Button btn2=(Button)findViewById(R.id.button2);  
  11.     final Animation scaleAnimation= new   
  12.      ScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);  
  13.                                                         //设置尺寸变化动画对象  
  14.     btn1.setOnClickListener(new View.OnClickListener() {        //设置监听器  
  15.           
  16.         @Override  
  17.         public void onClick(View v) {  
  18.             // TODO Auto-generated method stub  
  19.             scaleAnimation.setDuration(2000);               //动画持续时间  
  20.             image.setAnimation(scaleAnimation);         //设置动画  
  21.             scaleAnimation.startNow();                      //启动动画  
  22.         }  
  23.     });  
  24.     btn2.setOnClickListener(new View.OnClickListener() {        //设置监听器  
  25.           
  26.         @Override  
  27.         public void onClick(View v) {  
  28.             // TODO Auto-generated method stub  
  29.             scaleAnimation.cancel();                        //取消动画执行  
  30.         }  
  31.     });  
  32. }  
  33. }  

 

在这段代码中,首先通过ScaleAnimation构造方法创建了一个尺寸变化的动画对象。然后,在第一个按钮监听器中设置了动画的持续时间,之后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码,将看到图片从小到大逐渐变化,如图9.9所示。最后,图片增大到原始尺寸的时候停止,如图9.10所示。

技术分享 
图9.9  尺寸变化动画
技术分享 
图9.10  原始尺寸图片

 

  TranslateAnimation是移动的动画效果。它有三个构造函数,分别是:

  1.public  TranslateAnimation(Context context,AttributeSet attrs)   略过

  2.public  TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

  这个是我们最常用的一个构造方法,

  float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;

  float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;

  float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;

  float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;

  如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,y+toYDelta)点.

 

  3.public  TranslateAnimation (int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

  fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);

  fromXValue:第二个参数是第一个参数类型的起始值;

  toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;

  后面四个参数就不用解释了。如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数。

      以x轴为例介绍参照与对应值的关系:

      如果选择参照为Animation.ABSOLUTE,那么对应的值应该是具体的坐标值,比如100到300,指绝对的屏幕像素单位

      如果选择参照为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT指的是相对于自身或父控件,对应值应该理解为相对于自身或者父控件的几倍或百分之多少。多试参数就明白了。

android ScaleAnimation类:尺寸变化动画类