Animation类相关属性:
android:duration 动画持续时间,以毫秒为单位
android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
android:fillBefore 如果设置为true,控件动画结束时,将还原动画开始时的状态
android:fillEnabled 与fillBefore效果相同,都是在动画结束时,将控件还原到初始化状态
android:repeatCount 动画重复次数 负数表示无限循环
android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新播放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义 是重复的类型,即回放时的动作
android:interpolator 设置插值器,其实就是制定的动作效果。
scale 渐变尺寸伸缩动画效果
alpha 渐变透明度动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果
动画的xml文件应该放在res/anim目录下
scale标签---调节尺寸
android:fromXScale 起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍
android:toXSxale 结尾的X方向上相对自身的缩放比例,浮点值
android:fromYScale 起始的Y方向上相对自身的缩放比例,浮点值
android:toYScale 结尾的Y方向上相对自身的缩放比例,浮点值
android:pivotX 缩放起点X轴坐标,可以是数值、百分比、百分数p三种样式,比如50、50%、50%p,当为数值时,表示当前view的左上角,即原点处加上50px,做为起始缩放点;如果为50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标
android:pivotY 缩放起点Y轴的坐标,取值及意义跟android:pivotX一样
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50"
android:pivotY="50"
android:duration="700" />
alpha标签---调节透明度
android:fromAlpha动画开始的透明度,从0.0 - 1.0,0.0表示全透明,1.0表示完全不透明
android:toAlpha动画结束时的透明度,也是从0.0 - 1.0,0.0表示全透明,1.0表示完全不透明
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="3000"
android:fillBefore="true">
</alpha>
rotate标签---旋转
android:fromDegrees 开始旋转的角度位置,正值代表顺时针方向度数,负值代表逆时针方向度数
android:toDegrees 结束时旋转到的角度位置,正值代表顺时针方向度数,负值代表逆时针方向度数
android:pivotX 缩放起点X轴坐标,可以是数值、百分数、百分数p三种样式,比如50,50%,50%p等,意义和scale标签时讲的一样
android:pivotY 缩放起点Y轴坐标,可以是数值、百分数、百分数p三种样式,比如50,50%,50%p等,意义和scale标签时讲的一样
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="-650"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
android:fillAfter="true">
</rotate>
translate标签---平移
android:fromXDelta 起始点X轴坐标,可以是数值、百分数、百分数p三种样式
android:fromYDelta 起始点Y轴坐标,可以是数值、百分数、百分数p三种样式
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:toXDelta="-80"
android:fromYDelta="0"
android:toYDelta="-80"
android:duration="2000"
android:fillBefore="true">
</translate>
set标签---定义动画合集
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:fillAfter="true">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
<scale
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"/>
<rotate
android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"/>
</set>
代码中使用:
ScaleAnimation scaleAnimation= AnimationUtils.loadAnimation(this,R.anim.scaleanim);
tv.startAnimation(scaleAnimation);
插值器:
- AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
- AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
- AnticipateInterpolator 开始的时候向后然后向前甩
- AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
- BounceInterpolator 动画结束的时候弹起
- CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
- DecelerateInterpolator 在动画开始的地方快然后慢
- LinearInterpolator 以常量速率改变
- OvershootInterpolator 向前甩一定值后再回到原来位置