Animation主要有四大属性,分别是淡入淡出,绕轴旋转,变化大小,位移变化
Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由android自身实现。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。
一、Tween Animation
xml中实现:
alpha |
渐变透明度动画效果 |
scale |
渐变尺寸伸缩动画效果 |
translate |
画面转换位置移动动画效果 |
rotate |
画面转移旋转动画效果 |
JavaCode中
AlphaAnimation |
渐变透明度动画效果 |
ScaleAnimation |
渐变尺寸伸缩动画效果 |
TranslateAnimation |
画面转换位置移动动画效果 |
RotateAnimation |
画面转移旋转动画效果 |
使用XML文件定义Tween Animation时XML文件的根节点可以是<alpha>、<scale> <translate>、<rotate>或者是把它们都放入<set>节点中。如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha/>
<scale/>
<translate/>
<rotate/>
</set>
Java Code实现如下:
AlphaAnimation:
1. AnimationSet animationSet = new AnimationSet(true);//创建一个AnimationSet对象
2. AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);//创建一个AlphaAnimation对象
3. alphaAnimation.setDuration(1000);//设置动画执行的时间(单位:毫秒)
4. animationSet.addAnimation(alphaAnimation);//将AlphaAnimation对象添加到AnimationSet当中
5. view.startAnimation(animationSet);//使用view的startAnimation方法开始执行动画
RotateAnimation :
1. AnimationSet animationSet = new AnimationSet(true);
2. /**
* 前两个参数定义旋转的起始和结束的度数,后两个参数定义圆心的位置
1. */
2. RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
3. Animation.RELATIVE_TO_PARENT, 1f,
4. Animation.RELATIVE_TO_PARENT, 0f);
5.
6. rotateAnimation.setDuration(5000);
7. animationSet.addAnimation(rotateAnimation);
8. imageView.startAnimation(animationSet);
9.
10.
TranslateAnimation:
1. AnimationSet animationSet = new AnimationSet(true);
2.
3. /**
4. * x和y轴的起始和结束位置
5. */
6. TranslateAnimation translateAnimation = new TranslateAnimation
7. (
8. Animation.RELATIVE_TO_SELF, 0f,
9. Animation.RELATIVE_TO_SELF,0.5f,
10. Animation.RELATIVE_TO_SELF, 0f,
11. Animation.RELATIVE_TO_SELF, 1.0f
12. );
13.
14. translateAnimation.setDuration(1000);
15. animationSet.addAnimation(translateAnimation);
16. view.startAnimation(animationSet);
ScaleAnimation:
1. AnimationSet animationSet = new AnimationSet(true);
2.
3. /**
4. * 围绕一个点伸缩
5. */
6. ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,
7. 0.1f, Animation.RELATIVE_TO_SELF, 0.5f,
8. Animation.RELATIVE_TO_SELF, 0.5f);
9. animationSet.addAnimation(scaleAnimation);
10. animationSet.setStartOffset(1000);
11. animationSet.setFillAfter(true);
12. animationSet.setFillBefore(false);
13. animationSet.setDuration(2000);
view.startAnimation(animationSet);