Android 之 TranslateAnimation类:位移动画类

Android中提供了4中动画:

AlphaAnimation 透明度动画
ScaleAnimation 缩放动画
TranslateAnimation 位移动画
RotateAnimation 旋转动画

因为这次有使用到TranslateAnimation,所以这次先讲TranslateAnimation。


android.view.animation
类 TranslateAnimation
java.lang.Object
这里写图片描述android.view.animation.Animation
这里写图片描述android.view.animation.TranslateAnimation
所有已实现的接口: Cloneable


字段

从类 android.view.animation.Animation 继承的字段

ABSOLUTE构造中的参数,绝对坐标
INFINITEsetRepeatCount(int)的传入参数,值为-1 即是无限次的
RELATIVE_TO_PARENT构造中的参数,相对于父控件身的坐标
RELATIVE_TO_SELF构造中的参数,相对于自身的坐标
RESTARTsetRepeatMode(int)的传入参数,如果有重复的话,重新播放
REVERSEsetRepeatMode(int)的传入参数,如果有重复的话,反向播放
START_ON_FIRST_FRAMEsetStartTime(long startTimeMillis)的传入参数,在第一次调用getTransformation启动动画
ZORDER_BOTTOMsetAnimation()的参数,在动画播放期间,强制把当前播放的内容放到其他内容之下
ZORDER_NORMALsetAnimation()的参数,正在播放的动画内容保持当前的Z轴顺序
ZORDER_TOPsetAnimation()的参数,在动画播放期间,强制把当前播放的内容放到其他内容的上面

构造方法

TranslateAnimation(Context context, AttributeSet attrs)
Constructor used when a TranslateAnimation is loaded from a resource.

TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
Constructor to use when building a TranslateAnimation from code

TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
Constructor to use when building a TranslateAnimation from code

我们比较常用的是后面两个构造方法,现在我们来分析下构造方法

  1. TranslateAnimation(Context context, AttributeSet attrs) 继承的构造

    • 参数context: 上下文环境
    • 参数attrs:自定义属性
    • 构造用途:从XML中构建TranslateAnimation
  2. TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

    • 参数fromXDelta:位置变化的起始点X坐标。
    • 参数toXDelta:位置变化的结束点X坐标。
    • 参数fromYDelta:位置变化的起始点Y坐标。
    • 参数toYDelta:位置变化的结束点Y坐标。
    • 构造用途:定义一个从起始坐标XY开始到 结束点XY的 TranslateAnimation
  3. TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

    • 参数fromXType:开始时x轴相对于组件的位置类型。
    • 参数fromXValue:开始时x轴的坐标。根据fromXType代表不同的意义。
    • 参数toXType:结束时x轴相对于组件的位置类型。
    • 参数toXValue:结束时x轴的坐标。根据toXType代表不同的意义。
    • 参数fromYType:开始时y轴相对于组件的位置类型。
    • 参数fromYValue:开始时y轴的坐标。根据fromYType代表不同的意义。
    • 参数toYType:结束时y轴相对于组件的位置类型。
    • 参数toYValue:结束时y轴的坐标。根据toYType代表不同的意义。
    • 构造用途:相比第二的构造,这个构造更加自定义,不在是固定的位置属性

方法

从类 android.view.animation.Animation 继承的公有方法
  1. void cancel()
    • 作用:取消这个动画
  2. long computeDurationHint()
    • 返回值:计算一个动画的持续时间,返回一个以毫秒为单位的数据
  3. int getBackgroundColor()
    • 返回值:这个动画的背景颜色
  4. boolean getDetachWallpaper()
    • 返回值: 这个动画是否脱离壁纸运行的boolean值
  5. long getDuration()
    • 返回值:这个动画应该持续的时间
  6. boolean getFillAfter()
    • 返回值: 这个动画结束时画面是否停留在最后一帧 的boolean值
  7. boolean fillBefore()
    • 返回值: 这个动画结束时画面是否停留在第一帧 的boolean值
  8. Interpolator getInterpolator()
    • 返回值: 此动画的插值器类型
  9. int getRepeatCount()
    • 返回值: 动画要重复多少次
  10. int getRepeatMode()
    • 返回值:动画要重复的模式,例如重新开始,反向开始
  11. long getStartOffset()
    • 返回值:这个动画在调用start方法后延迟了多久才启动
  12. long getStartTime()
    • 返回值:这个动画调用start方法的时间
  13. boolean getTransformation(long currentTime, Transformation outTransformation, float scale)
    • 参数currentTime:传入某个动画时间
    • 参数outTransformation:获取传入时间点的变形的原始数据对象
    • 参数scale:缩放比例
    • 返回值:如果当前这个动画时间动画还在运行则返回true
  14. boolean getTransformation(long currentTime, Transformation outTransformation)
    • 参数currentTime:传入某个动画时间
    • 参数outTransformation:获取传入时间点的变形的原始数据对象
    • 返回值:如果当前这个动画时间动画还在运行则返回true
  15. int getZAdjustment()
    • 返回值:Animation在Z轴方向的顺序
  16. boolean hasEnded()
    • 返回值:动画是否已经结束
  17. boolean hasStarted()
    • 返回值:动画是否已经开始
  18. void initialize(int width, int height, int parentWidth, int parentHeight)
    • 参数width:动画对象的宽
    • 参数height:动画对象的高
    • 参数parentWidth:父控件的宽
    • 参数parentWidth:父控件的高
    • 作用:初始化动画对象以及父控件尺寸。
  19. boolean isFillEnabled()
    • 返回值:当前动画的使能填充属性。当该属性为true时,将执行setFillBefore和setFillAfter方法,否则将忽略setFillBefore和setFillAfter方法。
  20. boolean isInitialized()
    • 返回值:如果动画已经初始化 则返回true
  21. void reset()
    • 作用:重置动画到初始化状态
  22. void restrictDuration (long durationMillis)
    • 参数durationMillis:最大允许动画持续时间
    • 作用:调整动画持续时间,确保了重复执行,也不会持续的比给定的时间更长。
  23. void scaleCurrentDuration (float scale)
    • 参数scale:缩放比例
    • 作用:按一定的比例放大持续时间
  24. void setAnimationListener(Animation.AnimationListener listener)
    • 参数listener:动画监听
    • 作用:给一个动画设置监听,设置类似侦听动画的开始或动画重复的通知
  25. void setBackgroundColor(int bg)
    • 参数bg:Color的int值
    • 作用:设置动画的背景颜色
  26. void setDetachWallpaper(boolean detachWallpaper)
    • 参数detachWallpaper:是否脱离壁纸运行动画
    • 作用:如果为true,这个动画将会脱离背景运行,首先你要有个背景
  27. void setDuration(long durationMillis)
    • 参数durationMillis:动画的持续时间
    • 作用:设置一个动画的持续时间
  28. void setFillAfter(boolean fillAfter)
    • 参数fillAfter:动画是否停留在最后一帧
    • 作用:设置动画是否停留在最后一帧,为true则是停留在最后一帧
  29. void setFillBefore(boolean fillBefore)
    • 参数fillBefore:动画是否停留在第一帧
    • 作用:设置动画是否停留在第一帧,为true则是停留在第一帧
  30. void setFillEnabled(boolean fillEnabled)
    • 参数fillEnabled:动画是否使能填充
    • 作用:设置动画是否使能填充,为true将执行setFillBefore和setFillAfter方法,否则将忽略setFillBefore和setFillAfter方法。
  31. void setInterpolator(Context context, int resID)
    • 参数context:上下文环境
    • 参数resID:插值器R ID
    • 作用:设置动画插值器属性,使用XML设置
  32. void setInterpolator(Interpolator i)
    • 参数i:插值器
    • 作用:设置动画插值器属性,使用代码设置
  33. void setRepeatCount(int repeatCount)
    • 参数repeatCount:重复次数
    • 作用:设置动画重复次数
  34. void setRepeatMode(int repeatMode)
    • 参数repeatMode:重复类型,例如 重头开始,反向开始
    • 作用:设置动画重复时候的模式
  35. void setStartOffset(long startOffset)
    • 参数startOffset:延迟时间
    • 作用:当调用start方法后延迟一定时间开始
  36. void setStartTime(long startTimeMillis)
    • 参数startTimeMillis:动画开始时间
    • 作用:在特定的时间调用start方法
  37. void setZAdjustment(int zAdjustment)
    • 参数zAdjustment:Z轴方向的顺序(TOP,NORMAL,BOTTOM)
    • 作用:调整播放内容在Z轴方向的顺序
  38. void start()
    • 作用:第一次执行getTransformation方法的时候才会执行动画
  39. void startNow()
    • 作用:执行动画的主要方法,使用时需要先通过setAnimation方法为某一个View对象设置动画.
  40. boolean willChangeBounds()
    • 返回值:判断动画是否会改变视图的边界,ture为会改变
  41. boolean willChangeTransformationMatrix ()
    • 返回值:判断动画是否会改变移动变换的矩阵,ture为会改变
从类 android.view.animation.Animation 继承的受保护的方法

以下方法不可以被调用使用,只是简单说明下是什么

  1. void applyTransformation(float interpolatedTime, Transformation t)
    • 参数interpolatedTime:动画进度时间值,取值范围在[0.0f-1.0f]
    • 参数t:动画某一帧中变形的原始数据
    • 作用:在自定义动画类的时候都要重写这个方法,主要作用是把一些属性组装成一个Transformation类,这个方法会被父类的getTransformation方法调用
  2. Animation clone ()
    • 返回值:此动画对象的副本
  3. void ensureInterpolator ()
    • 作用:这个动画有一个插值器
  4. void finalize ()
    • 作用:垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法
  5. float getScaleFactor ()
    • 作用:返回每个类在动画中的缩放比例因子
  6. float resolveSize (int type, float value, int size, int parentSize)
    • 参数type:动画坐标的类型
    • 参数value:动画坐标的值
    • 参数size:动画对象的大小
    • 参数parentSize:动画对象的父对象的大小
    • 返回值:返回动画的尺寸

举一个栗子

public class firstActivity extends Activity {   

@Override   
public void onCreate(Bundle savedInstanceState) {               //重载onCreate方法   
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.main);   

    final ImageView image=(ImageView)findViewById(R.id.imageView1); //ImageView对象   
    Button btn1=(Button)findViewById(R.id.button1);             //按钮对象   
    Button btn2=(Button)findViewById(R.id.button2);   
    final Animation translateAnimation=new TranslateAnimation(0,300,0,300);                                                                 //位置变化动画效果   

    btn1.setOnClickListener(new View.OnClickListener() {            //设置监听器   

        @Override   
        public void onClick(View v) {   
            // TODO Auto-generated method stub   
            translateAnimation.setDuration(3000);               //设置动画持续时间   
            translateAnimation.setRepeatCount(2);               //设置重复次数   
            translateAnimation.setRepeatMode(Animation.REVERSE);    //反方向执行   
            image.setAnimation(translateAnimation);             //设置动画效果   
            translateAnimation.startNow();                      //启动动画   
        }   
    });   
    btn2.setOnClickListener(new View.OnClickListener() {            //设置监听器   

        @Override   
        public void onClick(View v) {   
            // TODO Auto-generated method stub   
            translateAnimation.cancel();                        //取消动画执行   
        }   
    });   
}   

}   

在这段代码中,首先通过TranslateAnimation构造方法创建了一个位置变化的动画对象。然后,在第一个按钮监听器中设置了动画的持续时间、重复次数和重复模式等,然后启动该动画。在第二个按钮监听器中取消该动画。读者运行这段代码

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值