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 >    "android:activityOpenExitAnimation">@anim/in_from_right_abit    "android:activityCloseEnterAnimation">@anim/out_to_right_abit    "android:activityCloseExitAnimation">@anim/out_to_rightstyle><style name="ActivitySlideTheme" parent="AppBaseTheme">     <item name="android:windowNoTitle">trueitem >    <item name="android:windowAnimationStyle">@style/AnimationActivitystyle> 

AndroidManifest.xml

        <application android:theme="@style/ActivitySlideTheme">
        <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要调用的原生接口中可能不在主线程中运行,会出现动画效果时有时无
 @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); }

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

in_from_right_abit.xml:

<?xml version="1.0" encoding="utf-8"?><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:

<?xml version="1.0" encoding="utf-8"?><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:

<?xml version="1.0" encoding="utf-8"?><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:

<?xml version="1.0" encoding="utf-8"?><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 类。

更多相关文章

  1. Android数据存储的方法
  2. android 动画使用方式
  3. 在Android命令行启动程序的方法
  4. Android sdk配置 常见问题及处理方法
  5. Android之自定义Dialog屏幕旋转时自动关闭解决方法
  6. Android客户端和服务器端数据交互的第一种方法

随机推荐

  1. Android开发者指南(4) ―― Application
  2. Arcgis api for android V2.0模拟器调试
  3. android 类库介绍
  4. android 的NDK在Windwos环境搭建(一)
  5. Android(安卓)系统开发生成签名供 Androi
  6. android源码解析之(十四)-->Activity启动流
  7. Activity、Task、应用和进程
  8. Android(安卓)8.0 Oreo新特性
  9. 四、android studio使用自己库编译工程
  10. android database SQL language