看够了文字博客?不如来尝试看一下视频博客吧
配套视频地址:https://mp.weixin.qq.com/s/KpcwT-RH8kMIhWcuEcYDZw
简介
View动画的作用对象是view,支持的动画效果一般包括平移、缩放、旋转、透明度等四种。它属于渐进式动画,并且支持自定义。但是它执行的动画只是视觉上的改变,真正的属性及位置还在原先的地方。
创建view动画可以通过TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation等四种Animation的子类创建,也可以在xml中通过<translate>、<scale>、<rotate>、<alpha>等标签来定义来定义,一般建议使用xml来定义。
对应关系:
名称 | 类 | 标签 |
平移动画 | TranslateAnimation | <translate> |
缩放动画 | ScaleAnimation | <scale> |
旋转动画 | RotateAnimation | <rotate> |
透明度动画 | AlphaAnimation | <alpha> |
集合动画 | AnimationSet | <set> |
动画的创建
常用共用属性
属性 | 作用 | 取值 |
duration | 动画的持续时间 | float |
fillAfter | 动画结束后是否保留结束状态 | boolean |
interpolator | 插值器 | 资源 |
shareInterpolator | 集合中的动画是否共享同一个插值器 | boolean |
startOffset | 动画延迟播放时间 | float |
repeatCount | 动画重复次数,数字为负数时为无限循环 | float |
repeatMode | 重复的类型,reverse倒放,restart从新播放 | reverse/restart |
平移动画
作用:使View在水平和竖直方向完成平移
标签:<translate>
类:Traslate
属性 | 含义 | 值类型 |
fromXDelta | X轴的起始值 | float |
toXDelta | X轴的结束值 | float |
fromYDelta | Y轴的起始值 | float |
toYDelta | Y轴的结束值 | float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:fromYDelta="0"
android:toYDelta="100%"
android:zAdjustment="bottom"
android:duration="2000"
android:repeatCount="-1"
android:repeatMode="reverse"
android:fillAfter="true">
</translate>
缩放动画
作用:使View具有放大或者缩小的动画效果
标签:<scale>
类:ScaleAnimation
属性 | 含义 | 值类型 |
fromXScale | 水平方向缩放的起始值 | float |
toXScale | 水平方向缩放的结束值 | float |
fromYScale | 竖直方向缩放的起始值 | float |
toYScale | 数值方向缩放的结束值 | float |
pivotX | 缩放的x轴轴点的坐标 | float |
PivotY | 缩放的y轴轴点的坐标 | float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="100%"
android:toXScale="200%"
android:fromYScale="100%"
android:toYScale="200%"
android:duration="2000"
android:pivotX="0%"
android:pivotY="0%"
android:fillAfter="true">
</scale>
旋转动画
作用:使view具有旋转的动画效果
标签:<rotate>
类:RotateAnimation
属性 | 含义 | 值类型 |
fromDegrees | 旋转开始的角度 | float |
toDegrees | 旋转结束的角度 | float |
pivotX | 旋转的x轴轴点的坐标 | float |
PivotY | 旋转的y轴轴点的坐标 | float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="0%"
android:duration="2000"
android:fillAfter="true">
</rotate>
透明度动画
作用:使View改变透明度
标签:<alpha>
类:AlphaAnimation
属性 | 含义 | 值类型 |
fromAlpha | 透明度的起始值,取值范围0-1 | float |
toAlpha | 透明度的结束值,取值范围0-1 | float |
例子:
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1"
android:toAlpha="0"
android:duration="2000"
android:fillAfter="true">
</alpha>
动画集合
作用:动画的集合,其中可以包含多个动画,也可以包括若干个动画集合
标签:<set>
类:AnimationSet
例子:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fillAfter="true">
<translate
android:fromXDelta="0"
android:toXDelta="100%"
android:fromYDelta="0"
android:toYDelta="100%" />
<alpha
android:fromAlpha="1"
android:toAlpha="0" />
<rotate
android:fromDegrees="0"
android:toDegrees="90"
android:pivotX="0%"
android:pivotY="0%" />
<scale
android:fromXScale="100%"
android:toXScale="200%"
android:fromYScale="100%"
android:toYScale="200%"
android:pivotX="0%"
android:pivotY="0%" />
</set>
动画的使用
xml中定义的动画
- 使用AnimationUtils加载动画
Animation animation= AnimationUtils.loadAnimation(this,R.anim.anima_name);
- 需要使用动画的view调用startAnimation方法开启动画
view.startAnimation(animation);
动画状态的监听
通过对动画设置setAnimationListener对动画设置监听
onAnimationStart:动画开启时
onAnimationEnd:动画结束时
setAnimationListener:动画重复时
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
加入我的行列
微信公众号
QQ群: