失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android activity进入退出动画自定义

android activity进入退出动画自定义

时间:2024-07-10 16:32:46

相关推荐

android activity进入退出动画自定义

android activity进入退出动画自定义

根据自己项目用到的总结了以下两种方法:

方法一:自定义styles.xml文件,在AndroidManifest.xml清单文件中注册android:theme以实现动画,然后正常启动页面即可(application中设置应所有页面,activity中设置应用单个页面)

注意事项:

1、activityOpenEnterAnimation、activityOpenExitAnimation指定的是入场动画

2、activityCloseEnterAnimation、activityCloseExitAnimation指定的是出场动画

3、activityOpenEnterAnimation、activityCloseExitAnimation针对即将要开启的页面

4、activityOpenExitAnimation、activityCloseEnterAnimation针对的是当前页面

注意使用此方法设定activity动画时,出场动画不起效果,暂时原因未知,解决方案:在调用finish方法之后调用overridePendingTransition方法,具体使用方法请见方法二。

styles.xml文件:

<style name="AppBaseTheme" parent="android:Theme.Light"> </style> <!-- 页面弹出(入场出场)动画 --> <style name="AnimationActivity" parent="@android:style/Animation"><item name="android:activityOpenEnterAnimation">@anim/in_from_right</item ><item name="android:activityOpenExitAnimation">@anim/in_from_right_abit</item ><item name="android:activityCloseEnterAnimation">@anim/out_to_right_abit</item ><item name="android:activityCloseExitAnimation">@anim/out_to_right</item ></style><style name="ActivitySlideTheme" parent="AppBaseTheme"> <item name="android:windowNoTitle">true</item ><item name="android:windowAnimationStyle">@style/AnimationActivity</item></style>

AndroidManifest.xml

<!--指定application的theme--><!--应用所有的activity--><application android:theme="@style/ActivitySlideTheme">

<!--指定activtiy的theme--><!--指定单个的activity--><activity android:theme="@style/ActivitySlideTheme">

方法二:android 2.0版本后加入了overridePendingTransition函数可以实现该效果

注意事项:

1、该函数必须在startActivity和finish之后调用

2、startActivity方法之后调用是设置入场动画

3、finish方法之后调用是设置出场动画

4、void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim)

enterAnim:指定入场动画(针对即将要展示的页面)

exitAnim:指定出场动画(针对即将要关闭或隐藏的页面)

使用说明:

注意,在定义入场动画时,应该确保在主线程运行,否则有可能会无效。所以,尽量在调用处使用Activity.runOnUiThread(new Runnable() {XXXX});

添加原因:此段代码写在JS要调用的原生接口中可能不在主线程中运行,会出现动画效果时有时无

@Overridepublic void run() {Intent intent = new Intent(currentActivity,TestActivity.class);// 添加参数intent.putExtra(Constants.KEY_INETNT_PARAMS,payParams);intent.putExtra(Constants.KEY_INETNT_TITLE,name);currentActivity.startActivity(intent);// 定义出入场动画 currentActivity.overridePendingTransition(R.anim.in_from_right,R.anim.in_from_right_abit);}});

TestActivity.class类文件中:

/*** 点击系统返回和页面返回键时的处理*/private void backClick() {finish();// 定义出入场动画overridePendingTransition(R.anim.out_to_right_abit,R.anim.out_to_right);}

方法一和方法二对比:

方法一:使用成本比较大,每次启动页面或关闭页面均需要调用overridePendingTransition,

改善方案:重写startActivty()和finish()方法,如果要设置到整个app的页面可以定义基类如BaseActivity,然后重写基类的startActivty()和finish()方法。

方法二:只需在清单文件中配置,做通用配置比较简单,但是出场动画设置无效很头疼,目前原因还未知。

解决方案:

/*** 点击系统返回和页面返回键时的处理*/private void backClick() {finish();// 定义出入场动画overridePendingTransition(R.anim.out_to_right_abit,R.anim.out_to_right);}

anim文件夹下自定义的动画:

in_from_right_abit.xml:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translate android:duration="300"android:fromXDelta="0"android:toXDelta="-15%" /></set>

in_from_right.xml:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translate android:duration="300"android:fromXDelta="100%"android:toXDelta="0%" /></set>

out_to_right_abit.xml:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translate android:duration="300"android:fromXDelta="-15%"android:toXDelta="0%" /></set>

out_to_right.xml:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android" ><translate android:duration="300"android:fromXDelta="0%"android:toXDelta="100%" /></set>

具体动画可根据自己项目需求自定义

另:Android已经内置了几种动画效果,可以见 android.R.anim 类。

如果觉得《android activity进入退出动画自定义》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。