Android动画之布局动画布局动画是针对于ViewGroup使用的,这里用ListView来实现了布局动画的效果。
MainActivity代码:
public class MainActivity extends ActionBarActivity {
ArrayList<String> list=new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv=(ListView) findViewById(R.id.lv);
for (int i = 0; i < 30; i++) {
list.add("aaa"+i);
}
lv.setAdapter(new MyAdapter());
//布局动画管理器
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.bb));
//设置布局动画的顺序,一共有三种
lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
//布局动画设置到listview上
lv.setLayoutAnimation(lac);
//开启动画
lv.startLayoutAnimation();
}
public class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHander vh=null;
if (convertView==null) {
convertView= View.inflate(MainActivity.this, R.layout.aa, null);
vh= new ViewHander();
vh.tv=(TextView) convertView.findViewById(R.id.tv);
convertView.setTag(vh);
}else{
vh=(ViewHander) convertView.getTag();
}
vh.tv.setText(list.get(position));
return convertView;
}
class ViewHander{
TextView tv;
}
}
}
anim中的动画:
<?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>