注意事项:
1、activityOpenEnterAnimation、activityOpenExitAnimation指定的是入场动画
2、activityCloseEnterAnimation、activityCloseExitAnimation指定的是出场动画
3、activityOpenEnterAnimation、activityCloseExitAnimation针对即将要开启的页面
4、activityOpenExitAnimation、activityCloseEnterAnimation针对的是当前页面
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 >
- "android:activityOpenExitAnimation"
>@anim/in_from_right_abit
- "android:activityCloseEnterAnimation"
>@anim/out_to_right_abit
- "android:activityCloseExitAnimation"
>@anim/out_to_right
style>
<style name="ActivitySlideTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">trueitem >
<item name="android:windowAnimationStyle">@style/AnimationActivity
style>
AndroidManifest.xml
<application android:theme="@style/ActivitySlideTheme">
<activity android:theme="@style/ActivitySlideTheme">
注意事项:
1、该函数必须在startActivity和finish之后调用
2、startActivity方法之后调用是设置入场动画
3、finish方法之后调用是设置出场动画
4、void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim)
enterAnim:指定入场动画(针对即将要展示的页面)
exitAnim:指定出场动画(针对即将要关闭或隐藏的页面)
使用说明:
@Override
public 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);
}
in_from_right_abit.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="0"
android:toXDelta="-15%" />
set>
in_from_right.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="100%"
android:toXDelta="0%" />
set>
out_to_right_abit.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="-15%"
android:toXDelta="0%" />
set>
out_to_right.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="300"
android:fromXDelta="0%"
android:toXDelta="100%" />
set>
具体动画可根据自己项目需求自定义
另:Android已经内置了几种动画效果,可以见 android.R.anim 类。