zoukankan      html  css  js  c++  java
  • android style 退出动画 解决退出动画无效问题

    • 在AndroidMenifest.xml文件里面的Activity声明中,增加自己的Theme声明,如下:

    <activity

                android:name=".MyOrderListServiceActivity"

    android:theme="@style/MyTheme"

    >

    • 在values的style.xml文件里 声明 一个style,起名为MyTheme,注意这里面有我自定义的东西,涉及到动画的声明,就只有 <item name="android:windowAnimationStyle">@style/AnimationActivity</item>这一项。

    <style name="MyTheme">

            <!-- float_box为我们定义的窗口背景 -->

            <item name="android:backgroundDimEnabled">true</item>

            <item name="android:windowFrame">@null</item>

            <item name="android:windowBackground">@android:color/transparent</item>

            <item name="android:windowIsTranslucent">true</item>

            <item name="android:windowContentOverlay">@null</item>

            <item name="android:windowNoTitle">true</item>

            <item name="android:windowFullscreen">true</item>

            <item name="android:windowAnimationStyle">@style/AnimationActivity</item>

        </style>

    • 在values的style.xml文件里 声明 一个style,起名为AnimationActivity,没错就是上面的MyTheme中的windowAnimationStyle的实现,如下:

      <style name="AnimationActivity" mce_bogus="1" parent="@android:style/Animation.Activity">

              <item name="android:activityOpenEnterAnimation">@anim/slide_in_bottom</item>

              <item name="android:activityOpenExitAnimation">@anim/slide_out_bottom</item>

              <item name="android:activityCloseEnterAnimation">@anim/slide_in_bottom</item>

              <item name="android:activityCloseExitAnimation">@anim/slide_out_bottom</item>

          </style>

    • 添加完以上的内容,有的机器虽然进入的动画是可用的,但是退出的动画无效,还需要在你的Activity中添加一些代码,保证animation的完美运行

    • 添加全局变量

      protected int activityCloseEnterAnimation;

      protected int activityCloseExitAnimation

    • 在OnCreate里面添加如下代码:

      TypedArray activityStyle = getTheme().obtainStyledAttributes(new int[] {android.R.attr.windowAnimationStyle});

      int windowAnimationStyleResId = activityStyle.getResourceId(0, 0);      

      activityStyle.recycle();

      activityStyle = getTheme().obtainStyledAttributes(windowAnimationStyleResId, new int[] {android.R.attr.activityCloseEnterAnimation, android.R.attr.activityCloseExitAnimation});

      activityCloseEnterAnimation = activityStyle.getResourceId(0, 0);

      activityCloseExitAnimation = activityStyle.getResourceId(1, 0);

      activityStyle.recycle();

    • 在你的程序finish之前,需要调用如下代码:

      overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);

      我调用的例子如下:

      @Override

      public void finish() {

      Log.i(TAG, "finish");

      super.finish();

      overridePendingTransition(activityCloseEnterAnimation, activityCloseExitAnimation);

      }

    这样就可以了。

  • 相关阅读:
    java实现两个大数的相加
    转载:perl cpan 安装出现问题
    Linux下Clock skew detected的解决办法
    Object Builder Application Block
    Asp.Net MVC
    命名参数(转)
    (转)HTTP POST GET 本质区别详解
    jquery
    Introducing “Razor” – a new view engine for ASP.NET
    (转)全面讲解Oracle查询用户表空间
  • 原文地址:https://www.cnblogs.com/exmyth/p/4555907.html
Copyright © 2011-2022 走看看