记一次theme失效导致的寻bug之旅

事件背景:项目中需要引入侧滑返回的功能,功能已经实现,出现的问题是,侧滑的时候,出现的背景是黑色,等滑动完之后才会消失。

解决方案:将activity的theme设置成背景透明,即可在滑动过程中看到底层的activity,而不是看到黑色背景
bug场景:themes.xml中新建style,设置了属性:

    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>

并给activity应用了这个style作为theme,在滑动的时候,依然是黑色背景而不是透明背景

解决步骤:
1.检查是否theme设置问题,是否有属性覆盖,是否有子类重写,合并到编译后的values中是否正确--设置正确,属性正常
2.检查代码中是否动态设置theme--不存在动态设置
3.控制变量法,将theme的背景色改成红色,并将两个activity的布局背景色去掉,期望结果:红色背景--实际是黑色背景
4.注意到闪屏界面先变成红色,再变成背景图片,然后再跳转主页面。将闪屏界面的背景图片去掉,背景色也去掉,启动app,期望结果:背景红变黑再跳转主页面--与期望结果相同
5.由4说明theme设置是正常的(冷启动先加载默认主题-红色,在setcontentview后加载layout),说明是有设置过背景颜色,覆盖了theme的颜色
6.普通activity继承了baseactivity。在baseacitity中按照生命周期查看调用方法,发现了设置沉浸式状态栏的方法。进入该方法,发现其根据android版本做了不同的操作,在6.0以上的版本中,不仅设置了状态栏颜色,而且设置了背景色。注释掉这句,再次运行程序,theme设置生效,滑动过程中背景透明。bug解决

总结:
1.要树立信心,总是以为自己哪里设置错了,甚至到其他app上验证了自己的设置方法没问题,还是依然怀疑哪里设置没有生效,在1中消耗了大量时间
2.要夯实基础,闪屏界面之前没有留意到,还是因为不能确定闪过的界面就是第一个启动的splashactivity。这里的知识点:冷启动
3.要心细,确认问题方向后仔细排查,按执行顺序依次查找疑似代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值