咱们好,我是时曾相识2022。不喜欢唱跳篮球,但对杰伦的Rap却情有独钟。

今天给咱们讲讲酷炫的动画成员——LayoutAnimation。话不多说,直接上一个简单的作用图:

Android:LayoutAnimation的神奇效果

怎么样,和平常自己写的没有动画作用的页面比起来是不是更加酷炫。作用图只展示了从右到左叠加突变的作用,只需脑洞够大,LayoutAnimation是可以帮你完成各类动画的。接下来就让咱们看看LayoutAnimation如何完成这样的作用。

首要,新建一个XML动画文件slide_from_right.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="600">
    <translate
        android:fromXDelta="100%p"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:toXDelta="0" />
    <alpha
        android:fromAlpha="0.5"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:toAlpha="1" />
</set>

set标签下由translate(移动)和alpha(突变)动画组成。

其间translate(移动)动画由100%p移动到0。这儿需要留意运用的是100%p,其间加这个p是指按父容器的宽度进行百分比核算。插值器就依据自己想要的作用设置,这儿运用了一个decelerate_interpolator(减速)插值器。

第二个动画是alpha(突变)动画,由半透明到不透明,其间插值器是先加快后减速的作用。

接着咱们还需要创建一个layoutAnimation,其实也是一个XML文件layout_slid_from_right.xml:

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/slide_from_right"
    android:animationOrder="normal"
    android:delay="15%"/>

其间animation指定的就是咱们创建的第一个xml文件。animationOrder是指动画履行的次序模式,包括normal, reverse 和random。normal就是从上到下顺次进行,reverse依据姓名就知道是反序,random那当然是随机了,咱们就运用mormal即可。delay则是每个子视图履行动画的延迟份额,这儿需要留意的是这是相对于上个子视图履行动画延时份额。

最终咱们只需要在咱们的ViewGroup中设置layoutAnimation特点即可:

android:layoutAnimation="@anim/layout_slid_from_right"

当然也可在代码中手动设置:

val lin = findViewById<LinearLayout>(R.id.linParent)
val resId = R.anim.layout_slid_from_right
lin.layoutAnimation = AnimationUtils.loadLayoutAnimation(lin.context, resId)

总结:

  • layoutAnimation可以运用在任何一个ViewGroup上
  • 在运用set标签做动画叠加的时分必定要留意,set标签内需要添加duration特点,也就是动画时刻。如果不加动画是没有作用的。
  • 运用移动动画时,在百分比后边添加p的意思是基于父容器宽度进行百分比核算

以上就是LayoutAnimation的简单运用,只需你脑洞大开,各种各样的作用都能玩出来。完成起来也很简单,赶紧在项目中运用起来吧。