Android动画效果animation
1、Tween 根据指定动画开始和结束时的对象属性(位置、Alpha值(透明度)、大小、角度等)以及动画播放的时间长度生成动画;
2、Frame 指定每一帧所播放的图片和时间长度。
建立动画的方法:
1、在项目的res文件夹下建立动画资源xml文件,自动加入项目的资源类R中,程序再从资源类中加载动画来使用;
2、直接在程序代码中建立动画对象并设置相关属性。
具体方法:
1、在res文件夹下新建anim文件夹,在anim文件夹下新建xml文件,选择set类型;
2、在xml文件中,新建动画类型标签,例如<scale ></scale>等等;
3、在程序代码中加载使用(rotate.xml):
Animation anim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate);
mBtn.startAnimation(anim);
或者在activity之间跳转时(第一个为退出动画,第二个为显示动画):
overridePendingTransition(R.anim.fade, R.anim.hold);
View Animation(Tween Animation)
用XML定义的动画放在/res/anim/文件夹内,XML文件的根元素可以为<alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。默认情况下,所有动画是同时进行的,可以通过startOffset属性设置各个动画的开始偏移(开始时间)来达到动画顺序播放的效果。
Tween 4中动画效果:
属性名称
|
属性值 |
说明
|
interpolator
|
@android:anim/accelerate_decelerate_interpolator
|
中间快前后慢 |
设置变化快慢 |
@android:anim/linear_interpolator
|
一样快
|
|
@android:anim/accelerate_interpolator
|
越来越快 |
|
@android:anim/decelerate_interpolator
|
越来越慢
|
startOffset |
整数值
|
等待毫秒开始动画
|
duration
|
整数值
|
动画持续毫秒时间
|
1、Alpha:
属性名称
|
属性值 |
说明
|
fromAlpha
|
0~1
|
开始时透明度
|
toAlpha |
0~1
|
结束时透明度
|
属性名称
|
属性值 |
说明
|
fromXScale
|
0~
|
开始时X方向大小比例,1以上代表放大
|
toXScale |
0~
|
结束时X方向大小比例,1以上代表放大
|
pivotX
|
0~1
|
开始时图像的x坐标,0代表最左边,1代表最右边 |
属性名称
|
属性值 |
说明
|
fromXDelta
|
整数值 |
开始时x坐标的位移量
|
toXDelta |
整数值
|
结束时x坐标的位移量
|
属性名称
|
属性值 |
说明
|
fromDegrees
|
整数值
|
开始时角度
|
toDegrees |
整数值
|
结束时角度
|
pivotX
|
0~1
|
开始时图像的x坐标,0代表最左边,1代表最右边 |
Drawable Animation(Frame Animation):
必须以<animation-list>为根元素,oneshot为true表示从头到尾只播放一次,为false表示重复播放,以<item>表示要轮换显示的图片,duration属性表示各项显示的时间。XML文件要在/res/drawable/目录下。
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/dice01" android:duration="150"></item> <item android:drawable="@drawable/dice02" android:duration="150"></item> <item android:drawable="@drawable/dice03" android:duration="150"></item> <item android:drawable="@drawable/dice04" android:duration="150"></item> <item android:drawable="@drawable/dice05" android:duration="150"></item> <item android:drawable="@drawable/dice06" android:duration="150"></item> </animation-list>
程序中加载:
Resources res = getResources();
AnimationDrawable animDraw = (AnimationDrawable)res.getDrawable(R.drawable.anim_drawable);
或者直接代码建立:
AnimationDrawable animDraw = new AnimationDrawable();
animDraw.setOneShot(false);
Resources res = getResources();
animDraw.addFrame(res.getDrawable(R.drawable.img01), 100);
animDraw.addFrame(res.getDrawable(R.drawable.img02), 100);
播放动画:
ImgView.setImageDrawable(animDraw);
animDraw.start();
……
animDraw.stop();