1、ViewGroup动画
在实际的开发中我们常常有需要为ListView、GridView的子元素添加动画的,使得它的每个Item都以同样的动画效果出现,这主要应用了Android的LayoutAnimation。
为ViewGroup的Item增加动画的步骤如下:
1)在res/anim/目录下定义layoutAnimation
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="2"
android:animationOrder="normal"
android:animation="@anim/anim_item">
</layoutAnimation>
2)为子元素定义动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" />
<translate android:fromXDelta="500" android:toXDelta="0" />
</set>
3) 为ViewGroup指定动画属性
<ListView android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/id_list_view"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="8dp"
android:layoutAnimation="@anim/anim_layout" />
除了XML的方式,还有代码的方式
ListView lv = (ListView)findViewById(R.id.list);
Animation animation = AnimationUtils.loadAnimation(this,R.anim.anim_item);
LayoutAnimationController controller = new LayoutAnimationController(animation);
controller.setDelay(2);
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
lv.setLayoutAnimation(controller);
2、Activity的动画效果
Activity的自定义效果,主要用到overridePendingTransition(int enterAnim, int exitAnim)方法,其中enterAnim和exitAnim都是Activity被打开和暂停时动画所需的资源id。
启动Activity时可以按照如下方式添加自定义的切换效果
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.enterAnim,R.anim.exitAnim);
Activity退出时,添加自定义切换效果
@Override
public void finish(){
super.finish();
overridePendingTransition(R.anim.enterAnim,R.anim.exitAnim);
}
overridePendingTransition方法必须在startActivity或者finish之后调用,否则不起作用。
参考资料:<