Animation(1)

沙岳
2023-12-01
 

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);
 类似资料: