动画代码解读
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXDelta="-100%p" android:interpolator="@android:anim/decelerate_interpolator" android:toXDelta="0%p" /> </set>
从左边出来到正常显示,interpolator表示速度以根号X形式变化。
应用(在哪里声明都可以,推荐在intent附近和重写finish里)
overridePendingTransition(R.anim.entry_in,R.anim.register_out);
第一个参数是 新的活动打开的动画,第二个参数是 这个活动关闭的动画
效果
全部代码
entry_in
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXDelta="-100%p" android:interpolator="@android:anim/decelerate_interpolator" android:toXDelta="0%p" /> </set>
entry_out
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXDelta="0%p" android:interpolator="@android:anim/decelerate_interpolator" android:toXDelta="-50%p" /> </set>
register_in
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXDelta="100%p" android:interpolator="@android:anim/decelerate_interpolator" android:toXDelta="0%p" /> </set>
register_out
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="100" android:fromXDelta="0%p" android:interpolator="@android:anim/decelerate_interpolator" android:toXDelta="100%p" /> </set>
使用
entry activity里
case R.id.open_register: startActivity(RegisterActivity.class); overridePendingTransition(R.anim.register_in,R.anim.entry_out); break;
register activity里
@Override public void finish() { super.finish(); overridePendingTransition(R.anim.entry_in,R.anim.register_out); }
当然这样声明那么java代码就会太过冗余,在注册文件里声明是最好
不过style中不能同时继承Animation.Activity和Theme.AppCompat.Light.NoActionBar,就很麻烦