android 补间(Tween)动画
来源:互联网 发布:软件测试培训内容 编辑:程序博客网 时间:2024/05/23 00:07
android 补间(Tween)动画
如果动画中的图像变换的比较有规律时,可能采用自动生图中间图像的方式来生成动画,例如图像的移动、旋转、缩放等。补间动画的优点是可以节省空间。
一、移动补间动画
可以通过配置动画文件(xml文件)或java代码来实现补间动画的移动效果。补间动画文件需要放在res\anim目录下。假设在res\anim目录下有一个动画文件test.xml,该文件内容如下:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" android:fromXDelta="-320"
android:toXDelta="320" android:fromYDelta="0" android:toYDelta="0"
android:duration="5000" />
1,android:interpolator:表示动画渲染器。
accelerate_interpolator动画加速器。动画在开始时最慢,然后逐渐加速。
decelerate_interpolator动画减速器。动画在开始时最快,然后逐渐减速。
accelerate_decelerate_interpolator动画加减速器。动画在开始和结束时速度最慢,但在前半部分时开始加速,在后半部分时开始减速。
2,android:fromXDelta 动画起始位置的X坐标。
android:toXDelta 动画结束位置的X坐标。
android:fromYDelta 动画起始位置的Y坐标。
android:toYDelta 动画结束位置的Y坐标。
android:duration 动画的持续时间,单位是毫秒。
装载补间动画
装载补间动画文件需要使用AnimationUtils.loadAnimation方法。
装载text.xml文件的代码如下:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.test);
animation.setRepeatCount(Animation.INFINITE);//循环显示。
应用补间动画
假设有一个EditText组件(editText),将test.xml文件中设置的补间动画应用到EditText组件上的方式有两种:
(1) 使用EditText类的startAnimation方法:
editText.startAnimation(animation);
(2)使用Animation类的start方法:
//绑定补间动画
editText.setAnimation(animation);
//开始动画
animation.start();
如果想在该动画结束后运行别的动画或者别的操作,那么需要在AnimationListener接口的onAnimationEnd方法中完成。下面的例子就是在炮弹动画运行结束后,将其隐藏,然后再播放炸弹效果的动画和声音:
public void onAnimationEnd(Animation animation) {
//在投放炸弹动画结束之后。。。。
ivBlast.setVisibility(View.VISIBLE);
ivMissile.setVisibility(View.INVISIBLE);
try {
//开始播放爆炸的声音
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.bomb);
mediaPlayer.stop();
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
下面的例子是,小球落到地面后又弹起的动画:
public void onAnimationEnd(Animation animation) {
if(animation.hashCode() == animationBottom.hashCode()){
imageView.startAnimation(animationTop);
}else if(animation.hashCode() == animationTop.hashCode()){
imageView.startAnimation(animationBottom);
}
}
animationDrawable.stop();
animationDrawable.start();
}
二、缩放补间动画
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0"
android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="5000">
</scale>
android:pivotX 表示沿X轴方向缩放的支点位置。
android:pivotY 表示沿Y轴方向缩放的支点位置。
都为50%时,表示支点在中心位置。
三、旋转补间动画
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@animnear_interpolator" android:fromDegrees="0"
android:toDegrees="360" android:pivotX="50%" android:pivotY="50%"
android:duration="1000" android:repeatMode="restart" android:repeatCount="infinite"/>
android:repeatCount 设置旋转的次数,值为-1或者infinite时,表示补间动画永不停止。0表示一次。
android:repeatMode 设置重复的模式。默认是restart。当repeatCount的值大于0或者为infinite时才有效。
还可以设成reverse,表示偶数次显示动画时会做与动画文件定义的方向相反的方向动行。
四、透明补间动画
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="2000" />
五、多种补间动画一起应用
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="2000" />
<translate android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0" android:toXDelta="0" android:fromYDelta="0"
android:toYDelta="-380" android:duration="2000" />
<scale android:interpolator="@android:anim/accelerate_interpolator"
android:fromXScale="1.0" android:toXScale="0.2" android:fromYScale="1.0"
android:toYScale="0.2" android:pivotX="50%" android:pivotY="50%"
android:duration="2000" />
<t>
set标签中定义的动画会在同一时间开始运行。。。
六、振动效果
cycle_interpolator是振动动画渲染器。由于该渲染器未在系统中定义,需要自己编写cycle_interpolator.xml文件,并将该文件放在res\anim目录中。内容如下:
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="18" />
android:cycles 表示振动因子。值越大,振动的越剧烈。
下面来创建一个动画文件shake.xml。如下:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0" android:toXDelta="10"
android:fromYDelta="0" android:toYDelta="0" android:duration="3000"
android:interpolator="@animcle_interpolator" />
开始振动效果的代码如下:
animation = AnimationUtils.loadAnimation(this, R.anim.shake);
imageView = (ImageView) findViewById(R.id.shake_image);
imageView.startAnimation(animation);
一、移动补间动画
可以通过配置动画文件(xml文件)或java代码来实现补间动画的移动效果。补间动画文件需要放在res\anim目录下。假设在res\anim目录下有一个动画文件test.xml,该文件内容如下:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" android:fromXDelta="-320"
android:toXDelta="320" android:fromYDelta="0" android:toYDelta="0"
android:duration="5000" />
1,android:interpolator:表示动画渲染器。
accelerate_interpolator动画加速器。动画在开始时最慢,然后逐渐加速。
decelerate_interpolator动画减速器。动画在开始时最快,然后逐渐减速。
accelerate_decelerate_interpolator动画加减速器。动画在开始和结束时速度最慢,但在前半部分时开始加速,在后半部分时开始减速。
2,android:fromXDelta 动画起始位置的X坐标。
android:toXDelta 动画结束位置的X坐标。
android:fromYDelta 动画起始位置的Y坐标。
android:toYDelta 动画结束位置的Y坐标。
android:duration 动画的持续时间,单位是毫秒。
装载补间动画
装载补间动画文件需要使用AnimationUtils.loadAnimation方法。
装载text.xml文件的代码如下:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.test);
animation.setRepeatCount(Animation.INFINITE);//循环显示。
应用补间动画
假设有一个EditText组件(editText),将test.xml文件中设置的补间动画应用到EditText组件上的方式有两种:
(1) 使用EditText类的startAnimation方法:
editText.startAnimation(animation);
(2)使用Animation类的start方法:
//绑定补间动画
editText.setAnimation(animation);
//开始动画
animation.start();
如果想在该动画结束后运行别的动画或者别的操作,那么需要在AnimationListener接口的onAnimationEnd方法中完成。下面的例子就是在炮弹动画运行结束后,将其隐藏,然后再播放炸弹效果的动画和声音:
public void onAnimationEnd(Animation animation) {
//在投放炸弹动画结束之后。。。。
ivBlast.setVisibility(View.VISIBLE);
ivMissile.setVisibility(View.INVISIBLE);
try {
//开始播放爆炸的声音
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.bomb);
mediaPlayer.stop();
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
下面的例子是,小球落到地面后又弹起的动画:
public void onAnimationEnd(Animation animation) {
if(animation.hashCode() == animationBottom.hashCode()){
imageView.startAnimation(animationTop);
}else if(animation.hashCode() == animationTop.hashCode()){
imageView.startAnimation(animationBottom);
}
}
animationDrawable.stop();
animationDrawable.start();
}
二、缩放补间动画
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0"
android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="5000">
</scale>
android:pivotX 表示沿X轴方向缩放的支点位置。
android:pivotY 表示沿Y轴方向缩放的支点位置。
都为50%时,表示支点在中心位置。
三、旋转补间动画
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@animnear_interpolator" android:fromDegrees="0"
android:toDegrees="360" android:pivotX="50%" android:pivotY="50%"
android:duration="1000" android:repeatMode="restart" android:repeatCount="infinite"/>
android:repeatCount 设置旋转的次数,值为-1或者infinite时,表示补间动画永不停止。0表示一次。
android:repeatMode 设置重复的模式。默认是restart。当repeatCount的值大于0或者为infinite时才有效。
还可以设成reverse,表示偶数次显示动画时会做与动画文件定义的方向相反的方向动行。
四、透明补间动画
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="2000" />
五、多种补间动画一起应用
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="2000" />
<translate android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0" android:toXDelta="0" android:fromYDelta="0"
android:toYDelta="-380" android:duration="2000" />
<scale android:interpolator="@android:anim/accelerate_interpolator"
android:fromXScale="1.0" android:toXScale="0.2" android:fromYScale="1.0"
android:toYScale="0.2" android:pivotX="50%" android:pivotY="50%"
android:duration="2000" />
<t>
set标签中定义的动画会在同一时间开始运行。。。
六、振动效果
cycle_interpolator是振动动画渲染器。由于该渲染器未在系统中定义,需要自己编写cycle_interpolator.xml文件,并将该文件放在res\anim目录中。内容如下:
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:cycles="18" />
android:cycles 表示振动因子。值越大,振动的越剧烈。
下面来创建一个动画文件shake.xml。如下:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0" android:toXDelta="10"
android:fromYDelta="0" android:toYDelta="0" android:duration="3000"
android:interpolator="@animcle_interpolator" />
开始振动效果的代码如下:
animation = AnimationUtils.loadAnimation(this, R.anim.shake);
imageView = (ImageView) findViewById(R.id.shake_image);
imageView.startAnimation(animation);
1 0
- Android tween动画(补间动画)
- android补间动画(Tween Animation)
- android 补间(Tween)动画
- android动画之:补间动画(Tween动画)
- 补间动画(Tween)
- 补间( Tween)动画
- Android笔记 动画之tween(补间)动画demo
- Android 动画系列之补间(Tween)动画详解
- Android动画效果之Tween Animation(补间动画)
- Android动画——补间动画(Tween Animation)
- android 动画实现之 Tween Animation(补间动画)
- Android动画效果之Tween Animation(补间动画)
- Android 动画--补间动画(Tween Animation)
- Android 补间动画(Tween)之一 Tween动画与Interpolator
- Android ViewAnimation(tween animation补间动画)文档教程
- Android 学习之补间(Tween)动画
- Android 连续的补间动画(Animation/Tween)
- Android基础篇之补间动画(Tween)
- 欢迎使用CSDN-markdown编辑器
- 1051. Pop Sequence (25)
- Unix或Linux中&、jobs、fg、bg等命令的使用方法
- React-native、原生混合开发AndroidStudio打包流程(Windows 10)
- RDD基本操作(下)
- android 补间(Tween)动画
- linux uuid/uuid.h
- MapReduce的计算资源划分
- vi/vim多行注释、取消多行注释、多行复制、多行删除
- YII2的详解
- Android与js交互
- 基于SolrCloud的搜索服务架构
- Trafodion Troubleshooting
- 安装 Scrapy for Python2.7