打算整理下 android动画方面的知识,嗯  开始

一.android补间动画 分为四大类

alpha(透明度渐变)、scale(尺寸渐变)、translate(位置移动)、rotate(旋转)

通过JAVA类来表示 AlphaAnimation ScaleAnimation TranslateAnimation RotateAnimation

二.可以通过 XML文件 或者JAVA代码的方式来实现动画

1.动过XML来实现动画

在res目录中新建anim文件夹
在anim目录中新建一个anim.xml

1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha/>
<scale/>
<translate/>
<rotate/>
</set>

XML动画详细解析

alpha

说明: 0.0表示完全透明 1.0表示完全不透明 时间以毫秒为单位

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha android:fromAlpha="0.1" <!--动画起始时透明度 -->
android:toAlpha="1.0" <!--动画结束时透明度 -->
android:duration="3000" /> <!--动画持续时间-->
</set>

Scale

说明: 插入器 下一篇详细说

pivotX pivotY 确定了 放大缩小的中心 上面4个属性 定义了开始 和结束的比例 <1缩小>1放大

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator= "@android:anim/accelerate_decelerate_interpolator"
<!--interpolator 指定一个动画的插入器 -->
android:fromXScale="0.0"
<!--起始时 X坐标上的伸缩尺寸 -->
android:toXScale="1.4"
<!--结束时 X坐标上的伸缩尺寸 -->
android:fromYScale="0.0"
<!--起始时Y坐标上的伸缩尺寸 -->
android:toYScale="1.4"
<!--结束时Y坐标上的伸缩尺寸 -->
android:pivotX="50%"
<!--属性为动画相对于物件的X坐标的开始位置 -->
android:pivotY="50%"
<!--属性为动画相对于物件的Y坐标的开始位置 -->
android:fillAfter="false"
<!--当设置为true ,该动画转化在动画结束后被应用 -->
android:duration="700"
<!--时间 -->
/>
</set>

Translate

说明:没啥说的了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
<!--始时 X坐标上的位置 -->
android:toXDelta="-80"
<!--结束时 X坐标上的位置 -->
android:fromYDelta="30"
<!--起始时 Y坐标上的位置 -->
android:toYDelta="300"
<!--结束时 Y坐标上的位置 -->
android:duration="2000"
<!--时间-->
/>
</set>

Rotate

说明:其实也没啥好说的了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
<!--动画的插入器 -->
android:fromDegrees="0"
<!--动画起始时物件的角度 -->
android:toDegrees="+350"
<!--画结束时物件旋转的角度 可以大于360度 -->
android:pivotX="50%"
<!--X坐标的开始位置 -->
android:pivotY="50%"
<!--Y坐标的开始位置 -->
android:duration="3000"
/>
</set>

在JAVA 代码中调用XML

1
2
Animation myAnimation= AnimationUtils.loadAnimation(this, R.anim.my_action);
//使用AnimationUtils类的静态方法loadAnimation()来加载XML中的动画XML文件

2 试用JAVA 代码 来创建动画

说明 具体参数含义 可对照上面的XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//在代码中定义 动画实例对象
private Animation myAnimation_Alpha;
private Animation myAnimation_Scale;
private Animation myAnimation_Translate;
private Animation myAnimation_Rotate;
//根据各自的构造方法来初始化一个实例对象
myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);
myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
myAnimation_Translate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
设置动画监听,注意 当控件移动后 其点击事件 还在原来的未知 需要调用view.layout(x,x,x,x);方法修改下 控件的未知
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
});
最后 就查给控件添加上 创建好的动画 并启动了
view.startAnimation(animation);

谢谢