iielse / imageviewer

A simple and customizable Android full-screen image viewer 一个简单且可自定义的Android全屏图像浏览器
MIT License
2.23k stars 310 forks source link

添加进度条的时候,setProgress不起作用 #54

Closed MrHuangZW closed 4 years ago

MrHuangZW commented 5 years ago

@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); } });

        return progressView;
    }
MrHuangZW commented 5 years ago

自定义控件RoundProgressBar的ondraw后没反应

iielse commented 4 years ago
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没有渲染出进度的变化。