动画分类
补间动画
补间动画数据View动画,总共有四种操作:平移,缩放,旋转和Alpha动画
补间动画是通过改变View的显示位置,实现的动画,View的实际位置没有发生改变。比如一个Button[0,0,100,50]通过平移到Button[500,500,600,550],实际的响应点击状态的位置还是[0,0,100,50]。
动画分类细则
名称 | XML标签 | 子类 | 效果 |
---|
平移动画 | <translate> | TranslateAnimation | 移动View |
缩放动画 | <scale> | ScaleAnimation | 放大或者缩小View |
旋转动画 | <rotate> | RotateAnimation | 旋转View |
透明动画 | <alpha> | AlphaAnimation | 改变View的透明度 |
四种动画类都是Animation的子类,其中AnimationSet是动画集合,可以把单一的动画组合起来,对应的标签是<set>
平移动画 translate
字段 | 意义 |
---|
android:fromXDelta | 表示x的起始值 |
android:fromYDelta | 表示y的起始值 |
android:toXDelta | 表示x的结束值 |
android:toYDelta | 表示y的结束值 |
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="-200">
</translate>
原点向上平移
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="200"
android:toYDelta="200">
</translate>
原点向右下平移
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:fromYDelta="-200"
android:toXDelta="0"
android:toYDelta="0">
</translate>
向下平移到原点
缩放动画 scale
字段 | 意义 |
---|
android:fromXScale | 水平缩放的起始值 |
android:fromYScale | 竖直缩放的起始值 |
android:pivotX | 缩放的X坐标 |
android:pivotY | 缩放的Y坐标 |
android:toXScale | 水平缩放的结束值 |
android:toYScale | 竖直缩放的结束 |
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="0"
android:pivotY="0"
android:toXScale="2.0"
android:toYScale="1.0">
</scale>
原点横向放大
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="0"
android:pivotY="0"
android:toXScale="2.0"
android:toYScale="2.0">
</scale>
原点放大
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="100"
android:pivotY="100"
android:toXScale="0.5"
android:toYScale="0.5">
</scale>
非原点缩小
旋转动画 rotate
字段 | 意义 |
---|
android:fromDegrees | 旋转开始的角度 |
android:toDegrees | 旋转结束的角度 |
android:pivotX | 旋转的X坐标 |
android:pivotY | 旋转的Y坐标 |
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="0"
android:pivotY="0"
android:toDegrees="360">
</rotate>
顺时针旋转360
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="0"
android:pivotY="0"
android:toDegrees="-720">
</rotate>、
逆时针旋转720
透明度动画 alpha
字段 | 意义 |
---|
android:fromAlpha | 表示透明度的起始值 |
android:toAlpha | 表示透明度的结束值 |
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0"
android:toAlpha="1">
</alpha>
显示
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1"
android:toAlpha="0">
</alpha>
隐藏
动画组合 set
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fillAfter="true"
android:shareInterpolator="@android:anim/accelerate_decelerate_interpolator">
<!--透明度从无到有-->
<alpha
android:fromAlpha="0"
android:toAlpha="1" />
<!--旋转两圈半-->
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="900" />
<!--放大三倍-->
<scale
android:fromXScale="0"
android:fromYScale="0"
android:pivotX="0%"
android:pivotY="100%"
android:toXScale="3"
android:toYScale="3" />
<!--平移至中间位置-->
<translate
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-50%p"
android:toYDelta="50%p" />
</set>
代码地址
Github