原文链接:点击打开链接

=============================================================================================

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 构造中的参数,绝对坐标
INFINITE setRepeatCount(int)的传入参数,值为-1 即是无限次的
RELATIVE_TO_PARENT 构造中的参数,相对于父控件身的坐标
RELATIVE_TO_SELF 构造中的参数,相对于自身的坐标
RESTART setRepeatMode(int)的传入参数,如果有重复的话,重新播放
REVERSE setRepeatMode(int)的传入参数,如果有重复的话,反向播放
START_ON_FIRST_FRAME setStartTime(long startTimeMillis)的传入参数,在第一次调用getTransformation启动动画
ZORDER_BOTTOM setAnimation()的参数,在动画播放期间,强制把当前播放的内容放到其他内容之下
ZORDER_NORMAL setAnimation()的参数,正在播放的动画内容保持当前的Z轴顺序
ZORDER_TOP setAnimation()的参数,在动画播放期间,强制把当前播放的内容放到其他内容的上面

构造方法

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 codeTranslateAnimation(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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

  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();                        //取消动画执行   }   });
}   }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

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

Android 之 TranslateAnimation类:位移动画类(转载)相关推荐

  1. Android Activity界面切换添加动画特效 (转载修改)

    在Android 2.0之后有了void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim),其中里 ...

  2. TranslateAnimation类:位置变化动画类

    http://book.51cto.com/art/201204/328247.htm 9.2  TranslateAnimation类:位置变化动画类 TranslateAnimation类是And ...

  3. android 尺寸变化动画,android ScaleAnimation类:尺寸变化动画类

    Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, TranslateAnimation.今天我想 ...

  4. android 尺寸变化动画,Android ScaleAnimation类:尺寸变化动画类

    ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类. ScaleAnimation类中的很多方法都与Animation ...

  5. android做开场动画,Android_Android开场动画类完整实现代码,本文所述实例为在android中开起 - phpStudy...

    Android开场动画类完整实现代码 本文所述实例为在android中开起开场动画类,已封装好,进行android开发的朋友可使用.在这个类中,你可以:设置开场动画的图片资源.返回下一个要启动的Act ...

  6. android动画封装,Android开场动画类完整实现代码

    本文所述实例为在android中开起开场动画类,已封装好,进行android开发的朋友可使用.在这个类中,你可以:设置开场动画的图片资源.返回下一个要启动的Activity.显示开场动画.执行耗时的操 ...

  7. Android快速开发 动画系列(一) 之 TranslateAnimation(平移动画)

    TranslateAnimation类:位置变化动画类 TranslateAnimation类是Android系统中的位置变化动画类,用于控制View对象的位置变化,该类继承于Animation类.T ...

  8. ScaleAnimation类:尺寸变化动画类

    9.4  ScaleAnimation类:尺寸变化动画类 ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类.Scal ...

  9. android动画类

    android动画类有三种实现形式,分别是Property Animation,Frame Animation,Tween Animation.Tween Animation主要是实现图片的移动来实现 ...

最新文章

  1. 京东涉足快递业加剧行业动乱
  2. directshow+opencv显示usb的摄像头代码(并保存视频中的图片)
  3. codeblocks如何导入项目_T3如何利用系统工具导入导出复制存货档案
  4. sql replace into 与 insert into
  5. qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
  6. graphpad做饼图_3D 饼环图初步完成
  7. ios android 自动化测试工具,AndroidIOS自动化测试框架整合升级方案
  8. 冲压工艺中常见的问题,值得收藏
  9. Mac 下载破译版本 secureFX 和 secureCRT
  10. Greenplum数据库故障分析——UDP Packet Lost(packet reassembles failed)
  11. angular4使用原生JS属性报错error TS2339: Property 'checked' does not exist on type 'HTMLElement'.
  12. react-router v6替换history.goBack()和goForward()
  13. QT运行时的Debug、Release、Profile选项区别
  14. HTML教程(8)-播放音乐
  15. Redux的工作流程
  16. 分享一个360加固脱壳模拟器
  17. 1098:质因数分解(信奥)
  18. 一款很好用的调试JS的Eclipse插件
  19. Adobe acrobat修改批注名字
  20. Android知识积累

热门文章

  1. js向一个数组中添加元素
  2. matlab curve fitting工具箱,[matlab工具箱] 曲线拟合Curve Fitting
  3. 数字电路 电平转换总结
  4. kingbase(人大金仓)数据库的常用知识点与简单巡检
  5. 美团 2020暑期实习生 笔试回忆
  6. php在线拍照代码,Javascript+PHP实现在线拍照功能
  7. 微信小程序与VS webapi局域网内联调
  8. 摄像机标定03之矫正
  9. 群联金士顿惠普自封颗粒对应ID及相关数据表
  10. Maya2018快速统一UV大小