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);

    }

     

 

這樣就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM