Closed YuzuWang closed 4 years ago
start延时执行的,如果加载图片过快会先调用gone,然后visibe出了问题,我把gone也延时执行就没问题了
好的 3q
@Edwares @alongstorm 我试了一下延时的代码,发现即使延时也不能解决这个问题,在gif图片下,图片己经完全显示但是还是会显示进度,可以先清楚应用数据,然后打开gif图,这个问题必现。加载失败还会存在error视图和loading视图共存的问题。可以用路由器对手机限速方便复现 我测试时用的时demo3里面的那个gif
请问这个问题最后解决方法是什么
我发现问题原因了:库中ProgressView有问题,在设置setVisibility = View.Gone 没有效果,替换成ProgressBar就好了。或者自己定制一个LoadingProvider
interface VHCustomizer {
fun initialize(type: Int, viewHolder: RecyclerView.ViewHolder) {}
fun bind(type: Int, data: Photo, viewHolder: RecyclerView.ViewHolder) {}
}
interface ImageLoader {
fun load(view: ImageView, data: Photo, viewHolder: RecyclerView.ViewHolder)
fun load(subsamplingView: SubsamplingScaleImageView, data: Photo, viewHolder: RecyclerView.ViewHolder)
}
关于加载的过程.我将Loader的接口进行了调整.
现在框架不关心数据源是什么,也不关心加载过程.全权交给开发者.
你需要实现 VHCustomizer 中重新布局PhotoViewHolder
追加自定义元素,比如你的loadingUI.
在ImageLoader load 中去控制 load 的状态表现
public class DefaultLoadingUIProvider implements ImageWatcher.LoadingUIProvider { final FrameLayout.LayoutParams lpCenterInParent = new FrameLayout.LayoutParams(-2, -2); private Runnable runDelayDisplay;