android:windowIsTranslucent=true情况下的Activity转场动画穿透问题

问题描述

最近使用SwipeBackLayout做滑动返回,添加<item name="android:windowIsTranslucent">true</item>属性将window改为透明,发现这个设置影响到了Activity切换动画。

A、B两个Activity,初始启动A Activity,再使用A启动B Activity,此时在B中调用方法将A Activity关闭,正常情况下window不为透明,UI表现上并不会感知到Activity被关闭,但是在设置windowIsTranslucent=true之后,A Activity关闭动画会穿透到上层Activity,设置overridePendingTransition(0,0)也无效。

问题版本

系统版本 7.0及以上会出现动画穿透问题

版本4.04.45.06.07.08.0P
表现xxx

解决方案

这篇文章《Activity转场动画无效 android:windowIsTranslucent》中说明了在windowIsTranslucent=true情况下需要设置继承了@android:style/Animation.Translucent的动画。根据这个思路来解决遇到的动画穿透问题:

style中设置windowAnimationStyle,使用继承Animation.Translucent的动画。

<style name="AppTranslateTheme" parent="AppBaseTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@style/animation_translucent_translate</item>
</style>

设置Animation为null

<style name="animation_translucent_translate" parent="@android:style/Animation.Translucent">  
    <item name="android:windowEnterAnimation">@null</item>  
    <item name="android:windowExitAnimation">@null</item>  
</style>

设置好之后就不会出现穿透动画问题了,但是Activity的打开和关闭也都没有了默认动画,通过overridePendingTransition(int, int)来设置Activity动画。

public abstract class BaseActivity extends Activity{
    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        overridePendingTransition(android.R.anim.slide_in_left, 0); //设置入场动画
        setContentView(R.layout.activity_main);
    }

    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(0, android.R.anim.slide_out_right); //设置关闭动画
    }
}

问题解决。

总结



作者:Lynn_R01612x2
链接:https://www.jianshu.com/p/31e053564857
来源:简书
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值