Android关于Activity的跳转和finish时切换页面动画实现
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:107
今天沈阳斌子在做APP时,客户的需求变革是在原有的法度榜样上参加跳转页面的动画切换,类似IPhone的左出右进的方法,返回时是相反的效不雅。我知道用两种方法可以实现如许的效不雅,一种就是经由过程在startActivity后履行overridePendingTransition办法进行动画的切换,同样finish也是一样的。下面就是我封装好的办法:
/** * * @Description : 跳转页面的左出和右进的效不雅 * @Method_Name : startActivityAnim * @param activity * @return : void * @Creation Date : 2015-1-5 上午10:20:37 * @version : v1.00 * @Author : JiaBin * @Update Date : * @Update Author : JiaBin */ public static void startActivityAnim(Activity activity, Class<?> cla) { Intent intent = new Intent(); intent.setClass(activity, cla); activity.startActivity(intent); // 设置切换动画,大年夜右边进入,左边退出 activity.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left); }
那经由过程读本来Coder的代码(很头痛~~~)发明,如不雅应用我的共通办法,是可以实现客户的需求,然则更改的处所会很多,改起来很头痛,于是想应用第二种办法,经由过程xml设备,让每一个在AndroidManifest.xml中注册的Activity都引用设备如许就可以达到客户的效不雅又可以最小的程度上对项目进行更改了。下面就贴出办法:
1.起首在style.xml中声明如下代码:
<style name="AnimationActivity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item> <item name="android:activityOpenExitAnimation">@anim/push_left_out</item> <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item> <item name="android:activityCloseExitAnimation">@anim/push_right_out</item> </style>
2.在style.xml中声明如下代码:
<style name="themeSetting"> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style>
3.将AndroidManifest.xml中每一个须要应用该效不雅的Activity的theme设置并选择钙揭捉项,代码如下:
<activity android:name="com.nearprint.MainNewActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@style/themeSetting<span style="font-family: Arial, Helvetica, sans-serif;">" ></span>以上三步就可以实现拜访跳转Activity的动画的切换问题,下面贴出响应的动画文件。
in_from_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:duration="500" android:fromXDelta="100%p" android:toXDelta="0%p" /> </set>
out_to_left.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:duration="500" android:fromXDelta="0%p" android:toXDelta="-100%p" /> </set>
push_left_in.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" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
push_right_in.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" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
以上就是须要用的片段代码,有须要的本身弄一下,动画效不雅可以本身写,然后达到需求。