从一个Activity A跳转到另外一个Activity B,B页面从一个自定义的动画中出现,生活中常见的app都会自定义一个动画,也有的是手机里面定制好的原生动画,这里只谈加载B页面时的动画,A页面动画不理会,那么这样做就可以了,看代码
一、先写两个动画进入和退出时候用的(动画根据具体需要自行定义即可,但系统支持的时间最多300毫秒,过了这个时间推页面退出的时候会直接闪掉,现在的应用都处理成300毫秒以内的)
1、pop_enter_anim.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100%p"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="0" />
</set>
2、pop_exit_anim.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="100%p" />
</set>
二、定义一个动画样式,这里有两个item属性值,注意搭配,打开Acticity和返回退出Activity时候动画都能生效
<style name="animationUp" parent="android:Animation">
<item name="android:activityOpenEnterAnimation">@anim/pop_enter_anim</item>
<item name="android:activityOpenExitAnimation">@anim/pop_exit_anim</item>
</style>
三、定义一个Manifest中注册该Activity的Them样式,这几个属性够了,特别是最后两个属性一定要加上
<style name="ThemeActivity">
<item name="android:windowNoTitle">true</item>
<item name="android:windowAnimationStyle">@style/animationUp</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
四、注册该Activity到Manifest中,加上them属性就行了
<activity
android:name=".AnimationActivity"
android:theme="@style/ThemeActivity">
</activity>
五、在你要跳转到这个页面的地方直接
Intent intent = new Intent(v.getContext(), AnimationActivity.class);
startActivity(intent);
六、5.0系统以上需要在B页面的finish()方法里加上一句,否则退出动画不生效
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.pop_enter_anim,R.anim.pop_exit_anim);
}
ok!
生活不易,全靠努力,谢谢支持了