我們對Tween和Frame動畫比較熟悉,下面通過一個實例來了解一下LayoutAnimation(布局動畫) 首先要建立一個動畫文件zoom_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<scale
android:duration="1000"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1.0" />
</set>
這是一個大小和漸變的組合動畫,scale是尺寸動畫,from*Scale和to*Scale指定了初始和結(jié)束時的大小,alpha是一個漸變動畫,duration表示漸變的持續(xù)時間,fromAlpha和toAlpha指定了初始的和結(jié)束的透明度。
MainActivity.java:
package com.example.layoutanimationdemo;
public class MainActivity extends ActionBarActivity {
private List list = new ArrayList();
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list);
for (int i = 0; i < 20; i++) {
list.add("測試條目" + i);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
LayoutAnimationController layoutAnimationController = new LayoutAnimationController(
AnimationUtils.loadAnimation(this, R.anim.zoom_in));
layoutAnimationController
.setOrder(LayoutAnimationController.ORDER_NORMAL);
listView.setLayoutAnimation(layoutAnimationController);
listView.startLayoutAnimation();
}
}
考慮到版面問題,這里省略掉了導(dǎo)入的包,在IDE中這些包都可以自行導(dǎo)入。代碼比較簡單實現(xiàn),不懂的可以參照總結(jié)部分。 運行項目:
可以看到ListView中的條目一個個顯示出來,動畫效果可以讓我們的應(yīng)用交互性更強,用戶體驗更好,逼格也更高。
1.實例化LayoutAnimationController 控制器,結(jié)合AnimationUtils工具類的loadAnimation方法引入動畫文件;
2.setOrder(LayoutAnimationController.ORDER_NORMAL);設(shè)置顯示順序,多種顯示風(fēng)格可選;
3.listView.setLayoutAnimation(layoutAnimationController);//設(shè)定動畫
listView.startLayoutAnimation();//啟動動畫