Android中的动画:
一、分类:TweenAnimation(补间动画)和FrameAnimation(帧动画)。
-
TweenAnimation,通过对图像不断做变换产生动画效果,是一种渐变效果;
AlphaAnimation:透明度渐变;
ScaleAnimation:尺寸缩放;
TranslateAnimation:移动
RotateAnimation:旋转
-
FrameAnimation:顺序播放事先做好的图像是一种转换动画;
二、属性简介:
-
TweenAnimation共同属性:
android:duration [long] :动画持续的时间;
android:fillAfter [boolean]:视图停在动画结束的位置,但是真正的位置仍然是布局中给定位置;
android:fillBefore[boolean]:视图停在动画开始的位置;
android:interpolator :指定一个动画的插入器,常用的插入器有:
accelerater_decelerate_interpolator:加速-减速 动画插入器
accelerater_interpolator:加速动画插入器;
deceleratr_interpolator:减速动画插入器;
android:repeatCount[int]:动画重复次数,-1表示无限循环;
android:repeatMode[int]:定义动画重复的行为,1,从起点重新开始;2,从结束位置开始相反执行;
android:startOffset[long]:动画之间的时间间隔,从上次动画停多少时间开始执行下个动画;
android:zAdjustment[int]:定义动画的Z order的改变,0:保持Z Order不变;1:保持在最上层;-1保持在最下层;(????待验证)
1.1 AlphaAnimation
xml中定义
代码中定义:
|
1
2
3
4
|
AlphaAnimation alpha =
new
AlphaAnimation(fromAlpha, toAlpha);
alpha.setDuration(durationMillis);
|
1.2 ScaleAnimation
xml
|
1
2
3
4
5
6
7
8
|
<!-- <scale -->
<!-- android:fromXScale=
""
动画起始时X坐标上的伸缩尺寸-->
<!-- android:toXScale=
""
动画结束时X坐标上的伸缩尺寸-->
<!-- android:fromYScale=
""
动画起始时Y轴上的伸缩尺寸-->
<!-- android:toYScale=
""
动画结束时Y轴上的伸缩尺寸-->
<!-- android:pivotX=
""
动画相对于物件的X坐标的开始位置-->
<!-- android:pivotY=
""
动画相对与物件Y坐标的开始位置-->
<!-- /> -->
|
代码中
|
1
|
ScaleAnimation scale =
new
ScaleAnimation(fromX, toX, fromY, toY);
|
1.3 TranslateAnimation
xml
|
1
2
3
4
5
6
7
8
|
<
translate
android:fromXDelta
=
"0%"
//x轴起始位置
android:pivotX
=
"0%"
//动画相对于物件X坐标的开始位置
android:pivotY
=
"0%"
//动画相对于物件Y坐标的开始位置
android:toXDelta
=
"30%"
//x轴的结束位置
android:fromYDelta
=
"0%"
//y轴起始位置
android:toYDelta
=
"0%"
//y轴结束位置
android:duration
=
"10000"
/>
|
代码中:
|
1
|
TranslateAnimation anim =
new
TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta)
|
1.4 RotateAnimation
xml
|
1
2
3
4
5
6
7
|
<!-- <rotate -->
<!-- android:fromDegrees=
""
动画起始时物件的角度 -->
<!-- android:toDegrees=
""
动画结束时物件旋转的角度 -->
<!-- 角度为负表示逆时针旋转,角度为正表示顺时针旋转 -->
<!-- android:pivotX=
""
动画相对于物件X坐标的开始位置 -->
<!-- android:pivotY=
""
动画相对与物件Y坐标的开始位置 -->
<!-- android:duration=
""
动画运行时间/> -->
|
代码:
|
1
|
ScaleAnimation anim =
new
ScaleAnimation(fromX, toX, fromY, toY)
|
2.xml定义动画在activity中的使用:
|
1
|
Animation animation = (Animation) AnimationUtils.loadAnimation(MainActivity.
this
, R.anim.animation);
|
3.插值器的使用
| Interpolator对象 |
资源ID |
功能作用 |
| AccelerateDecelerateInterpolator |
@android:anim/accelerate_decelerate_interpolator |
先加速再减速 |
| AccelerateInterpolator |
@android:anim/accelerate_interpolator |
加速 |
| AnticipateInterpolator |
@android:anim/anticipate_interpolator |
先回退一小步然后加速前进 |
| AnticipateOvershootInterpolator |
@android:anim/anticipate_overshoot_interpolator |
在上一个基础上超出终点一小步再回到终点 |
| BounceInterpolator |
@android:anim/bounce_interpolator |
最后阶段弹球效果 |
| CycleInterpolator |
@android:anim/cycle_interpolator |
周期运动 |
| DecelerateInterpolator |
@android:anim/decelerate_interpolator |
减速 |
| LinearInterpolator |
@android:anim/linear_interpolator |
匀速 |
| OvershootInterpolator |
@android:anim/overshoot_interpolator |
快速到达终点并超出一小步最后回到终点 |
4.FrameAnimation:帧动画
添加图片,按照添加图片的顺序播放;
|
1
2
3
4
5
6
|
AnimationDrawable anima =
new
AnimationDrawable();
anima.addFrame(drawable1, duration1);
anima.addFrame(drawable2, duration2);
anima.addFrame(drawable3, duration3);
anima.addFrame(drawable4, duration4);
view.setBackgroudDrawable(anima);
|
本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1607198
,如需转载请自行联系原作者