一、系统自带简单实现
自带的效果图:
实现方法:
在布局文件中加上android:animateLayoutChanges=”true”, 即可,如下:
<LinearLayout
android:id="@+id/ll_layout_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="one"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="two"/>
</LinearLayout>
二、显示时,让子元素有动画效果
简单实现渐变效果图:
- 1、xml 实现
布局:
<LinearLayout
android:id="@+id/ll_layout_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutAnimation="@anim/layout_anim">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="one"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="two"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="one"/>
</LinearLayout>
layout_anim:
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="30%"
android:animationOrder="normal"
android:animation="@anim/layout_anim_alpha">
</layoutAnimation>
layout_anim_alpha:
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.2"
android:toAlpha="1.0"
android:duration="1000"
android:fillAfter="true"
>
</alpha>
- 2、 代码实现
布局中可以去除layoutAnimation,效果如下:
实现方法如下:
//通过代码设置
//设置过渡动画
val scaleAnimation = ScaleAnimation(0f, 1f, 0f, 1f)
scaleAnimation.duration = 2000
//设置布局动画的显示属性,第一个参数是动画,第二个参数是每个控件完成动画的延迟,为0时不能设置执行顺序
//设置布局动画的显示属性,第一个参数是动画,第二个参数是每个控件完成动画的延迟,为0时不能设置执行顺序
val layoutAnimationController =
LayoutAnimationController(scaleAnimation, 0.5f)
//设置执行顺序,LayoutAnimationController.ORDER_NORMAL,顺序;ORDER_RANDOM,随机;ORDER_REVERSE逆序
//设置执行顺序,LayoutAnimationController.ORDER_NORMAL,顺序;ORDER_RANDOM,随机;ORDER_REVERSE逆序
layoutAnimationController.order = LayoutAnimationController.ORDER_NORMAL
ll_layout_two.layoutAnimation = layoutAnimationController