<!-- res/anim/fade_in.xml --> <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0" />
view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
AlphaAnimation fadeInAnimation = (AlphaAnimation) AnimationUtils.loadAnimation(this, R.anim.fade_in); view.startAnimation(fadeInAnimation);
android:toYScale 动画结束时Y坐标上的缩放尺寸
PS:以上四个属性,0.0表示缩放到没有,1.0表示正常无缩放,小于1.0表示收缩,大于1.0表示放大
android:pivotX 缩放时的固定不变的X坐标,一般用百分比表示,0%表示左边缘,100%表示右边缘
android:pivotY 缩放时的固定不变的Y坐标,一般用百分比表示,0%表示顶部边缘,100%表示底部边缘
<!-- res/anim/zoom_out.xml --> <?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000" android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="0%" android:pivotY="100%" android:toXScale="1.5" android:toYScale="1.5" />
ScaleAnimation zoomOutAnimation = (ScaleAnimation) AnimationUtils.loadAnimation(this, R.anim.zoom_out); view.startAnimation(zoomOutAnimation);
<!-- res/anim/move_left_to_right.xml --> <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromXDelta="-100%" android:fromYDelta="0" android:toXDelta="100%p" android:toYDelta="0" />
TranslateAnimation moveAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(this, R.anim.move_left_to_right); view.startAnimation(moveAnimation);
<!-- res/anim/rotate_one.xml --> <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" />
RotateAnimation rotateAnimation = (RotateAnimation) AnimationUtils.loadAnimation(this, R.anim.rotate_one); view.startAnimation(rotateAnimation);
<!-- res/anim/move_and_scale.xml --> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000"> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="200%" android:toYDelta="0" /> <scale android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="0%" android:pivotY="100%" android:toXScale="1.5" android:toYScale="1.5" /> </set>
android:repeatMode 设置动画重复执行的模式,可设为以下两个值其中之一:
android:startOffset 设置动画执行之前的等待时长,毫秒为单位;重复执行时,每次执行前同样也会等待一段时间
android:zAdjustment 表示被设置动画的内容在动画运行时在Z轴上的位置,取值为以下三个值之一:
android:interpolator 设置动画速率的变化,比如加速、减速、匀速等,需要指定Interpolator资源,后面再详细讲解
PS:<set>标签还有个android:shareInterpolator属性,设置为true时则可将interpolator应用到所有子元素中
Interpolator class | Resource ID | Description |
---|---|---|
AccelerateDecelerateInterpolator | @android:anim/accelerate_decelerate_interpolator | 在动画开始与结束时速率改变比较慢,在中间的时候加速 |
AccelerateInterpolator | @android:anim/accelerate_interpolator | 在动画开始时速率改变比较慢,然后开始加速 |
AnticipateInterpolator | @android:anim/anticipate_interpolator | 动画开始的时候向后然后往前抛 |
AnticipateOvershootInterpolator | @android:anim/anticipate_overshoot_interpolator | 动画开始的时候向后然后向前抛,会抛超过目标值后再返回到最后的值 |
BounceInterpolator | @android:anim/bounce_interpolator | 动画结束的时候会弹跳 |
CycleInterpolator | @android:anim/bounce_interpolator | 动画循环做周期运动,速率改变沿着正弦曲线 |
DecelerateInterpolator | @android:anim/decelerate_interpolator | 在动画开始时速率改变比较快,然后开始减速 |
LinearInterpolator | @android:anim/decelerate_interpolator | 动画匀速播放 |
OvershootInterpolator | @android:anim/overshoot_interpolator | 动画向前抛,会抛超过最后值,然后再返回 |
<accelerateInterpolator> 在动画开始时速率改变比较慢,然后开始加速。有一个属性可以设置加速的速率
<anticipateInterpolator> 动画开始的时候向后然后往前抛。有一个属性设置向后拉的值
<anticipateOvershootInterpolator> 动画开始的时候向后然后向前抛,会抛超过目标值后再返回到最后的值。可设置两个属性
<bounceInterpolator> 动画结束的时候会弹跳。没有可更改设置的属性
<cycleInterpolator> 动画循环做周期运动,速率改变沿着正弦曲线。有一个属性设置循环次数
<decelerateInterpolator> 在动画开始时速率改变比较快,然后开始减速。有一个属性设置减速的速率
<linearInterpolator> 动画匀速播放。没有可更改设置的属性
<overshootInterpolator> 动画向前抛,会抛超过最后值,然后再返回。有一个属性
<!-- res/anim/my_interpolator.xml --> <?xml version="1.0" encoding="utf-8"?> <anticipateOvershootInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:tension="3" android:extraTension="2" />
<!-- res/anim/rotate_one.xml --> <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:interpolator="@anim/my_interpolator" />