曾经遇到的坑

本文探讨了Glide加载图片的常见问题及解决方案,包括图片模糊、尺寸自适应等,并介绍了如何利用SnapHelper优化RecyclerView的滚动体验。同时,分享了动态设置App主题和换肤的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码设置ring类型的shape时候找不到设置thickness、innerRadius的方法,貌似是隐藏的,所以并不能动态去是设置颜色,有个小坑,就是后面设置的颜色会覆盖掉之前的颜色,如果是先设置background,再在代码中获取对象这中方式就会出现这种情况;建议以其他的方式去实现。

RecycleView在设置成横向列表的时候,系统提供了SnapHelper这个辅助类来调整Item的位置,这个是抽象类,官方提供了
LinearSnapHelper,可以让RecyclerView滚动停止时相应的Item停留中间位置;还提供了PagerSnapHelper,
可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。
使用很简单new LinearSnapHelper().attachToRecyclerView(recyclerview);
其实两个子类的效果差不多,只有细微的区别,可以根据实际开发需要去设置。

动态设置app主题,Activity提供了setTheme(int a)的方法,必须在setContentView之前设置,简单实现的是重启Activity,设置启动模式singleTask,注意可能有一瞬间的闪屏,需要去掉转场动画
在xml中先规定好主题样式

换肤:网络异步下载皮肤包,文件名字必须一样,然后替换即可

Glide宽度填满,自适应图片高度,列表中出现图片有时清晰有时模糊的bug,原因高度高的图片复用了的高度底的图片位置(相差比较大),
深层的原因是在Glide加载完成图片后的回调(onResourceReady())中,Drawable的资源不是当前条目加载的图片高度,而是复用的图片的宽高
而计算后的结果是499,目标图片是1080*500的大小,所以出现了模糊的情况;
解决办法,在使用图片加载的地方给imageview设置一个高度(目测需要比图片高度大,具体多少需要视情况而定),列表中使用
的话需要在代码中设置一下,因为复用的关系;普通的话在xml中设置就行,保险的话就2个地方都加

疑惑:设置高度后在回调中能获取正确的Drawable的宽高,没有设置的话获取的是复用的图片的宽高?

级别:偶发性(只要Imageview高度比实际的图片高度低就会出现)


Glide加载图片的时候,如果没有额外的设置,默认会根据imageview的大小去压缩图片并显示,所以不用担心图片内存的问题,一般不会出现OOM的问题
如果出现了Glide加载的图片不能自适应的话,可以通过.override()去设置大小
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值