android style 退出动画 解决退出动画无效问题

参考:http://jingyan.baidu.com/article/48a42057c49cdba9242504b0.html
在AndroidMenifest.xml文件里面的Activity声明中,增加自己的Theme声明,如下:

<activity
            android:name=".MyOrderListServiceActivity"
            android:theme="@style/MyTheme"/>

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

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

添加完以上的内容,有的机器虽然进入的动画是可用的,但是退出的动画无效,还需要在你的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);
}

这样就可以了。

你可能感兴趣的:(android)