Closed MrHuangZW closed 4 years ago
自定义控件RoundProgressBar的ondraw后没反应
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 的状态表现
你的问题可能是progressView.setProgress(progress);
执行在了子线程所以 ui没有渲染出进度的变化。
@Override public View initialView(ViewGroup parent) { lpCenterInParent.gravity = Gravity.CENTER; lpCenterInParent.width = DimenUtils.dip2px(parent.getContext(), 30); lpCenterInParent.height = DimenUtils.dip2px(parent.getContext(), 30); final RoundProgressBar progressView = new RoundProgressBar(getContext()); progressView.setRoundWidth(DimenUtils.dip2px(parent.getContext(), 4)); progressView.setCricleColor(Color.parseColor("#000000")); progressView.setCricleProgressColor(Color.parseColor("#ffffff")); progressView.setLayoutParams(lpCenterInParent); progressView.setMax(100); ProgressInterceptor.addListener(getDisplayingUri().toString(), new ProgressListener() { @Override public void onProgress(final int progress) { progressView.setProgress(progress); } });