LayoutAnimationController用於為一個layout里面的控件,或者是一個ViewGroup里面的控件設置動畫效果,可以在XML文件中設置,亦可以在Java代碼中設置。
一種直接在XML文件中設置
1. 在res/anim文件夾下新建一個XML文件,名為list_anim_layout.xml,
- <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
- android:delay="30%"
- android:animationOrder="reverse"
- android:animation="@anim/slide_right" />
android:delay 子類動畫時間間隔 (延遲) 70% 也可以是一個浮點數 如“1.2”等
android:animationOrder="random" 子類的顯示方式 random表示隨機
android:animationOrder 的取值有
normal | 0 | 默認 |
reverse | 1 | 倒序 |
random | 2 | 隨機 |
android:animation="@anim/slide_right" 表示孩子顯示時的具體動畫是什么
2. 在res/anim文件夾下新建一個XML文件,名為slide_right,即上面用到的文件。
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:interpolator="@android:anim/accelerate_interpolator">
- <translate android:fromXDelta="-100%p" android:toXDelta="0"
- android:duration="@android:integer/config_shortAnimTime" />
- </set>
顯示的效果為ListView第一次出現的時候為 item隨機出現 每個Item都是從左不可見(-100%p)的區域向右滑動到顯示的地方
3. 在主布局文件中為控件添加如下配置:
android:layoutAnimation="@anim/list_anim_layout",即第一步的布局文件。
第二種設置方法:在Java代碼中設置
1. 同上;
2. 同上;
4. 在Acitivty中添加如下代碼:
//通過加載XML動畫設置文件來創建一個Animation對象;
Animation animation=AnimationUtils.loadAnimation(this, R.anim.list_anim);
//得到一個LayoutAnimationController對象;
LayoutAnimationController lac=new LayoutAnimationController(animation);
//設置控件顯示的順序;
lac.setOrder(LayoutAnimationController.ORDER_REVERSE);
//設置控件顯示間隔時間;
lac.setDelay(1);
//為ListView設置LayoutAnimationController屬性;
datalist.setLayoutAnimation(lac);