在Activity中Android提供了overridePendingTransition(int enterAnim,int exitAnim)这个方法用于设置Activity之间切换的动画效果。overridePendingTransition方法要放到startActivity()或finish()(如果存在finish则要放到finish后面)后面。
enterAnim 定义Activity进入屏幕时的动画
exitAnim 定义Activity退出屏幕时的动画
系统中也提供了几种动画效果例如:
android.R.anim.slide_in_left 从左边滑入
android.R.anim.slide_out_right 从右边滑出
android.R.anim.fade_in 淡入
android.R.anim.fade_out 淡出
在这里我们可以自定义动画效果:
首先在res文件夹下面新建一个anim文件
(1)in_from_left.xml 从左边滑入
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:duration="500"/> </set>
(2)in_from_right.xml 从右边滑入
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500"/> </set>
(3)out_to_left.xml 从左边滑出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0%p" android:toXDelta="-100%p" android:duration="500"/> </set>
(4)out_to_right.xml 从右边滑出
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0%p" android:toXDelta="100%p" android:duration="500"/> </set>
使用方法:
从右边进入,左边离开
private OnClickListener btnListener = new OnClickListener(){ public void onClick(View view){ Intent intent = new Intent(MainActivity.this,OtherActivity.class); startActivity(intent); overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left); } };
从左边进入,右边离开
private OnClickListener btnListener = new OnClickListener(){ public void onClick(View view){ Intent intent = new Intent(OtherActivity.this,MainActivity.class); startActivity(intent); finish(); overridePendingTransition(R.anim.in_from_left,R.anim.out_to_right); } };