从上面的语法可以看出,View动画既可以是单个动画,也可以由一系列动画组成。标签表示动画集合,对应AnimationSet类,它可以包含若干个动画,并且它的内部也是可以嵌套其他动画集合的
android:interpolator 表示动画集合所采用的插值器,插值器影响动画的速度,比如非匀速动画就需要通过插值器来控制动画的播放过程。这个属性可以不指定,默认为@android:anim/accelerate_decelerate_interpolator,即加速减速插值器android:shareInterpolator 表示集合中的动画是否和集合共享同一个插值器。如果集合不指定插值器,那么子动画就需要单独指定所需的插值器或者使用默认值。标签标示平移动画,对应TranslateAnimation类,它可以使一个View在水平和竖直方向完成平移的动画效果 android:fromXDelta——表示x的起始值,比如0; android:toXDelta——表示x的结束值,比如100; android:fromYDelta——表示y的起始值; android:toYDelta——表示y的结束值。下面的代码从当前位置Y方向移动
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromYDelta="0%" android:interpolator="@android:interpolator/accelerate_cubic" android:toYDelta="300%"> </translate>Activity中调用
class MainActivity : AppCompatActivity() { private var TAG = "MainActivity" private var button: Button? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button = findViewById(R.id.btn) val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.anim) button!!.setOnClickListener { button!!.startAnimation(loadAnimation) } } }组合动画使用如下,引用方式同上
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000"> <translate android:fromYDelta="0%" android:interpolator="@android:interpolator/accelerate_cubic" android:toYDelta="300%" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" /> </set>