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 | 构造中的参数,绝对坐标 |
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
我们比较常用的是后面两个构造方法,现在我们来分析下构造方法
TranslateAnimation(Context context, AttributeSet attrs) 继承的构造
- 参数context: 上下文环境
- 参数attrs:自定义属性
- 构造用途:从XML中构建TranslateAnimation
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
- 参数fromXDelta:位置变化的起始点X坐标。
- 参数toXDelta:位置变化的结束点X坐标。
- 参数fromYDelta:位置变化的起始点Y坐标。
- 参数toYDelta:位置变化的结束点Y坐标。
- 构造用途:定义一个从起始坐标XY开始到 结束点XY的 TranslateAnimation
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 继承的公有方法
- void cancel()
- 作用:取消这个动画
- long computeDurationHint()
- 返回值:计算一个动画的持续时间,返回一个以毫秒为单位的数据
- int getBackgroundColor()
- 返回值:这个动画的背景颜色
- boolean getDetachWallpaper()
- 返回值: 这个动画是否脱离壁纸运行的boolean值
- long getDuration()
- 返回值:这个动画应该持续的时间
- boolean getFillAfter()
- 返回值: 这个动画结束时画面是否停留在最后一帧 的boolean值
- boolean fillBefore()
- 返回值: 这个动画结束时画面是否停留在第一帧 的boolean值
- Interpolator getInterpolator()
- 返回值: 此动画的插值器类型
- int getRepeatCount()
- 返回值: 动画要重复多少次
- int getRepeatMode()
- 返回值:动画要重复的模式,例如重新开始,反向开始
- long getStartOffset()
- 返回值:这个动画在调用start方法后延迟了多久才启动
- long getStartTime()
- 返回值:这个动画调用start方法的时间
- boolean getTransformation(long currentTime, Transformation outTransformation, float scale)
- 参数currentTime:传入某个动画时间
- 参数outTransformation:获取传入时间点的变形的原始数据对象
- 参数scale:缩放比例
- 返回值:如果当前这个动画时间动画还在运行则返回true
- boolean getTransformation(long currentTime, Transformation outTransformation)
- 参数currentTime:传入某个动画时间
- 参数outTransformation:获取传入时间点的变形的原始数据对象
- 返回值:如果当前这个动画时间动画还在运行则返回true
- int getZAdjustment()
- 返回值:Animation在Z轴方向的顺序
- boolean hasEnded()
- 返回值:动画是否已经结束
- boolean hasStarted()
- 返回值:动画是否已经开始
- void initialize(int width, int height, int parentWidth, int parentHeight)
- 参数width:动画对象的宽
- 参数height:动画对象的高
- 参数parentWidth:父控件的宽
- 参数parentWidth:父控件的高
- 作用:初始化动画对象以及父控件尺寸。
- boolean isFillEnabled()
- 返回值:当前动画的使能填充属性。当该属性为true时,将执行setFillBefore和setFillAfter方法,否则将忽略setFillBefore和setFillAfter方法。
- boolean isInitialized()
- 返回值:如果动画已经初始化 则返回true
- void reset()
- 作用:重置动画到初始化状态
- void restrictDuration (long durationMillis)
- 参数durationMillis:最大允许动画持续时间
- 作用:调整动画持续时间,确保了重复执行,也不会持续的比给定的时间更长。
- void scaleCurrentDuration (float scale)
- 参数scale:缩放比例
- 作用:按一定的比例放大持续时间
- void setAnimationListener(Animation.AnimationListener listener)
- 参数listener:动画监听
- 作用:给一个动画设置监听,设置类似侦听动画的开始或动画重复的通知
- void setBackgroundColor(int bg)
- 参数bg:Color的int值
- 作用:设置动画的背景颜色
- void setDetachWallpaper(boolean detachWallpaper)
- 参数detachWallpaper:是否脱离壁纸运行动画
- 作用:如果为true,这个动画将会脱离背景运行,首先你要有个背景
- void setDuration(long durationMillis)
- 参数durationMillis:动画的持续时间
- 作用:设置一个动画的持续时间
- void setFillAfter(boolean fillAfter)
- 参数fillAfter:动画是否停留在最后一帧
- 作用:设置动画是否停留在最后一帧,为true则是停留在最后一帧
- void setFillBefore(boolean fillBefore)
- 参数fillBefore:动画是否停留在第一帧
- 作用:设置动画是否停留在第一帧,为true则是停留在第一帧
- void setFillEnabled(boolean fillEnabled)
- 参数fillEnabled:动画是否使能填充
- 作用:设置动画是否使能填充,为true将执行setFillBefore和setFillAfter方法,否则将忽略setFillBefore和setFillAfter方法。
- void setInterpolator(Context context, int resID)
- 参数context:上下文环境
- 参数resID:插值器R ID
- 作用:设置动画插值器属性,使用XML设置
- void setInterpolator(Interpolator i)
- 参数i:插值器
- 作用:设置动画插值器属性,使用代码设置
- void setRepeatCount(int repeatCount)
- 参数repeatCount:重复次数
- 作用:设置动画重复次数
- void setRepeatMode(int repeatMode)
- 参数repeatMode:重复类型,例如 重头开始,反向开始
- 作用:设置动画重复时候的模式
- void setStartOffset(long startOffset)
- 参数startOffset:延迟时间
- 作用:当调用start方法后延迟一定时间开始
- void setStartTime(long startTimeMillis)
- 参数startTimeMillis:动画开始时间
- 作用:在特定的时间调用start方法
- void setZAdjustment(int zAdjustment)
- 参数zAdjustment:Z轴方向的顺序(TOP,NORMAL,BOTTOM)
- 作用:调整播放内容在Z轴方向的顺序
- void start()
- 作用:第一次执行getTransformation方法的时候才会执行动画
- void startNow()
- 作用:执行动画的主要方法,使用时需要先通过setAnimation方法为某一个View对象设置动画.
- boolean willChangeBounds()
- 返回值:判断动画是否会改变视图的边界,ture为会改变
- boolean willChangeTransformationMatrix ()
- 返回值:判断动画是否会改变移动变换的矩阵,ture为会改变
从类 android.view.animation.Animation 继承的受保护的方法
以下方法不可以被调用使用,只是简单说明下是什么
- void applyTransformation(float interpolatedTime, Transformation t)
- 参数interpolatedTime:动画进度时间值,取值范围在[0.0f-1.0f]
- 参数t:动画某一帧中变形的原始数据
- 作用:在自定义动画类的时候都要重写这个方法,主要作用是把一些属性组装成一个Transformation类,这个方法会被父类的getTransformation方法调用
- Animation clone ()
- 返回值:此动画对象的副本
- void ensureInterpolator ()
- 作用:这个动画有一个插值器
- void finalize ()
- 作用:垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法
- float getScaleFactor ()
- 作用:返回每个类在动画中的缩放比例因子
- 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类:位移动画类(转载)相关推荐
- Android Activity界面切换添加动画特效 (转载修改)
在Android 2.0之后有了void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim),其中里 ...
- TranslateAnimation类:位置变化动画类
http://book.51cto.com/art/201204/328247.htm 9.2 TranslateAnimation类:位置变化动画类 TranslateAnimation类是And ...
- android 尺寸变化动画,android ScaleAnimation类:尺寸变化动画类
Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimation, ScaleAnimation, TranslateAnimation.今天我想 ...
- android 尺寸变化动画,Android ScaleAnimation类:尺寸变化动画类
ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类. ScaleAnimation类中的很多方法都与Animation ...
- android做开场动画,Android_Android开场动画类完整实现代码,本文所述实例为在android中开起 - phpStudy...
Android开场动画类完整实现代码 本文所述实例为在android中开起开场动画类,已封装好,进行android开发的朋友可使用.在这个类中,你可以:设置开场动画的图片资源.返回下一个要启动的Act ...
- android动画封装,Android开场动画类完整实现代码
本文所述实例为在android中开起开场动画类,已封装好,进行android开发的朋友可使用.在这个类中,你可以:设置开场动画的图片资源.返回下一个要启动的Activity.显示开场动画.执行耗时的操 ...
- Android快速开发 动画系列(一) 之 TranslateAnimation(平移动画)
TranslateAnimation类:位置变化动画类 TranslateAnimation类是Android系统中的位置变化动画类,用于控制View对象的位置变化,该类继承于Animation类.T ...
- ScaleAnimation类:尺寸变化动画类
9.4 ScaleAnimation类:尺寸变化动画类 ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化,该类继承于Animation类.Scal ...
- android动画类
android动画类有三种实现形式,分别是Property Animation,Frame Animation,Tween Animation.Tween Animation主要是实现图片的移动来实现 ...
最新文章
- 京东涉足快递业加剧行业动乱
- directshow+opencv显示usb的摄像头代码(并保存视频中的图片)
- codeblocks如何导入项目_T3如何利用系统工具导入导出复制存货档案
- sql replace into 与 insert into
- qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
- graphpad做饼图_3D 饼环图初步完成
- ios android 自动化测试工具,AndroidIOS自动化测试框架整合升级方案
- 冲压工艺中常见的问题,值得收藏
- Mac 下载破译版本 secureFX 和 secureCRT
- Greenplum数据库故障分析——UDP Packet Lost(packet reassembles failed)
- angular4使用原生JS属性报错error TS2339: Property 'checked' does not exist on type 'HTMLElement'.
- react-router v6替换history.goBack()和goForward()
- QT运行时的Debug、Release、Profile选项区别
- HTML教程(8)-播放音乐
- Redux的工作流程
- 分享一个360加固脱壳模拟器
- 1098:质因数分解(信奥)
- 一款很好用的调试JS的Eclipse插件
- Adobe acrobat修改批注名字
- Android知识积累