(1)使用LayoutAnimation
所謂的布局動畫,其實就是為ViewGroup添加顯示動畫效果,主要用過LayoutAnimationController來控制實現。LayoutAnimationController用於為一個Layout里面的控件,或者是一個ViewGroup里面的控件設置動畫效果,可以在XML文件中設置,亦可以在Java代碼中設置。
注意:布局動畫是在android布局發生變化時添加動畫效果,layout動畫在每次布局發生變化的時候系統調用的一個預加載動畫效果,使用layout動畫可以讓布局的變化過度看起來更自然
1. 通過創建xml文件,其中list_anim在res/anim/list_anim.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <set xmlns:android="http://schemas.android.com/apk/res/android" 3 android:interpolator="@android:anim/accelerate_interpolator" 4 android:shareInterpolator="true" > 5 6 <alpha 7 android:duration="1000" 8 android:fromAlpha="0.0" 9 android:toAlpha="1.0" /> 10 11 </set>
2. 為ListView的layoutAnimation創建list_anim_layout.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 3 android:delay="2" 4 android:animationOrder="normal" 5 android:animation="@anim/list_anim"/>
1 <ListView 2 ... 3 ...4 android:layoutAnimation="@anim/list_anim_layout"/>
1 // 在代碼中實現列表動畫 2 Animation animation = (Animation) AnimationUtils.loadAnimation( 3 mContext, R.anim.list_anim); 4 LayoutAnimationController lac = new LayoutAnimationController(animation); 5 lac.setDelay(0.4f); //設置動畫間隔時間 6 lac.setOrder(LayoutAnimationController.ORDER_NORMAL); //設置列表的顯示順序 7 mListView.setLayoutAnimation(lac); //為ListView 添加動畫
(2)通過 Adapter.getView() 方法
通過getView(int position, View convertView, ViewGroup parent) 返回的 view,進行對其動畫操作就可。
e.g. :水平向上移動並翻轉360度。
1 ObjectAnimator.ofFloat(convertView, "translationY", 400, 0).setDuration(1000).start(); 2 ObjectAnimator.ofFloat(convertView, "rotationX", 360, 0).setDuration(1000).start();
參考:Layout動畫:在android布局發生變化時添加動畫效果
Android的Animation之LayoutAnimation使用方法
Android 從布局動畫引入ListView滑動時,每一Item項的顯示動畫