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

问题描述

最近使用SwipeBackLayout做滑动返回,添加true属性将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.0

4.4

5.0

6.0

7.0

8.0

P

表现

x

x

x

解决方案

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

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

设置Animation为null

设置好之后就不会出现穿透动画问题了,但是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

来源:简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值