项目场景:
突然有一天测试小MM跑过来跟我说为什么APP上的水波纹效果变成这样了,之前在Android11版本机器上跑还好好的,说得我一脸懵,同一个APP也就是同一套代码在不同版本上跑咋会成这样效果呢,忽然灵光一闪,可能是谷歌升级版本改了源码,这是bug呀。心里暗暗自喜,自己也能发现谷歌那帮大牛写的代码bug了,但是压力却给到我这边了,因为很多项目都使用了Ripple标签实现涟漪效果,如果重新构造,工作量是巨大的,那到底该怎么解决呢?
问题描述:
Android11效果图
Android12效果图
代码展示
<selector>
<item android:state_focused="true" android:drawable="@drawable/audi_mib3_icon_bt_d2"/>
<item android:state_selected="true" android:drawable="@drawable/audi_mib3_main_icon_bt_sel"/>
<item android:state_pressed="true" android:drawable="@drawable/audi_mib3_main_icon_bt_n"/>
<item android:drawable="@drawable/audi_mib3_main_icon_bt_n"/>
</selector>
</item>
原因分析:
通过Android11跟Android12源码比对,发现只有这个文件有较大差异–RippleDrawable.java 通过外网搜索也有人反应过此问题,但是没有提供解决方法,只能靠自己了。
解决方案:
目前已确定只要比对Android11跟Android12源码这个RippleDrawable.java文件的差异,不要覆盖,否则编译不过去,要看着哪些可以保存下来,就能解决此问题了。
最后,感谢大家阅读完这篇文章,希望能对你们有所助益。如有任何疑问,欢迎在下方评论区留言,我们一起交流学习,共同成长!