Android中ShimmerFrameLayout设置repeat delay失效问题求助
ShimmerFrameLayout设置shimmer_repeat_delay导致shimmer_duration异常的问题解决
这确实是shimmer-android库旧版本中的一个已知bug,不是你的使用方式有误。
问题原因
在早期版本的库中,shimmer_repeat_delay的内部实现存在逻辑缺陷,设置该参数时会错误干扰shimmer_duration的计算逻辑,最终导致闪烁扫过的速度变慢。
解决方案
有两种可行的解决方式:
升级库到最新稳定版
Facebook后续版本已经修复了这个参数冲突的问题,升级后shimmer_duration和shimmer_repeat_delay可以独立生效,不会互相影响。代码动态设置参数(无法升级库时使用)
如果因为项目依赖限制无法升级库,可以在代码中手动构建Shimmer实例并设置参数,避开XML布局中同时设置两个属性的冲突:
Kotlin示例:
val shimmerLayout = findViewById<ShimmerFrameLayout>(R.id.your_shimmer_layout_id) val shimmerConfig = Shimmer.AlphaHighlightBuilder() .setDuration(1500) // 闪烁扫过时长 .setRepeatDelay(4000) // 重复间隔时长 .build() shimmerLayout.setShimmer(shimmerConfig)
Java示例:
ShimmerFrameLayout shimmerLayout = findViewById(R.id.your_shimmer_layout_id); Shimmer shimmerConfig = new Shimmer.AlphaHighlightBuilder() .setDuration(1500) .setRepeatDelay(4000) .build(); shimmerLayout.setShimmer(shimmerConfig);
注意:使用代码设置时,需要移除XML布局中app:shimmer_duration和app:shimmer_repeat_delay这两个属性,避免参数冲突。
内容的提问来源于stack exchange,提问作者Saeid Z
相关产品推荐
相关产品推荐

