关于Activity切换动画(overridePendingTransition)的黑色背景问题

前阵子遇到一个 Bug。一个 activity 的启动动画需要自定义为从屏幕底部升起。当时是这样写的:

1
2
startActivity( new Intent( this , SettingActivity_. class ));
overridePendingTransition(R.anim.slide_in_from_bottom, 0);

 之所以在 overridePendingTransition的第二个参数写0,是以为在这里只需要设定启动动画。然而实测结果,是 activity在升起时,露出的背景是黑色的。这显然错误。

修改方法是:

1
overridePendingTransition(R.anim.slide_in_from_bottom, R.anim.fake_anim);

 一定要添加结束动画,这里的 fake_anim 其实就是保持屏幕位置,什么动画也不做。但是这能保证切换动画背景的正确。

究其原因,就是因为 overridePendingTransition(int enterAnim, int exitAnim) 这个方法的第二个参数是设定即将结束的那个 activity 的结束动画。如果设置为0,那么它会直接不可见,即变成黑色,造成错误。

这个问题其实还有一个解决方法,就是设置 activity 的主题,在主题中设置 windowBackground 为透明。但这会在该 activity 启动新 activity 时,出现背景透明的错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值