首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在回收视图中利用弗雷斯科对2-3图像进行预处理

如何在回收视图中利用弗雷斯科对2-3图像进行预处理
EN

Stack Overflow用户
提问于 2016-11-26 14:05:30
回答 1查看 1.4K关注 0票数 1

我正在使用以下代码使用Fresco在回收视图中加载图像。当前,只要用户滚动到任何项,图像加载就会启动,而Fresco会加载图像并将其缓存以供以后使用,下一次图像将从缓存加载。是否有任何方法预先对图像进行预处理,以便在第一次加载时就可以快速加载图像。

代码语言:javascript
复制
public class ProductFeedsRecyclerAdapterV2 extends RecyclerView.Adapter<ProductFeedsRecyclerAdapterV2.ViewHolder> {

    private static final String TAG = ProductFeedsRecyclerAdapterV2.class.getSimpleName();
    private List<ProductFeed> mItems;
    private float ratio;

    Context context;
    String user_id;

    public ProductFeedsRecyclerAdapterV2(Context context, List<ProductFeed> items) {
        mItems = items;
        this.context = context;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_brand_feed, viewGroup, false);

        return new ViewHolder(v);
    }


    @Override
    public void onBindViewHolder(final ViewHolder viewHolder, final int i) {

        final ProductFeed feed = mItems.get(i);

        CircleProgressBarDrawable drawable = new CircleProgressBarDrawable();
        drawable.setBackgroundColor(context.getResources().getColor(R.color.gray));
        drawable.setColor(context.getResources().getColor(R.color.colorAccent));

        GenericDraweeHierarchyBuilder builder =
                new GenericDraweeHierarchyBuilder(context.getResources());
        GenericDraweeHierarchy hierarchy = builder
                .setFadeDuration(100)
                .setProgressBarImage(drawable)
                .build();

        hierarchy.setActualImageScaleType(ScalingUtils.ScaleType.FOCUS_CROP);
        hierarchy.setActualImageFocusPoint(new PointF(0.5f,0f));

        Uri uri = Uri.parse(feed.image);
        viewHolder.ivBrandImage.setImageURI(uri);
        viewHolder.ivBrandImage.setHierarchy(hierarchy);
        viewHolder.ivBrandImage.setAspectRatio(1.15f);

    }

    @Override
    public int getItemCount() {
        return mItems.size();
    }


    class ViewHolder extends RecyclerView.ViewHolder {

        @BindView(R.id.ivBrandImage) SimpleDraweeView ivBrandImage;
        ViewHolder(View v) {
            super(v);
            ButterKnife.bind(this, v);
        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-28 11:18:47

壁画支持预取,请参阅http://frescolib.org/docs/using-image-pipeline.html

你只需打电话

代码语言:javascript
复制
imagePipeline.prefetchToDiskCache(imageRequest, callerContext);

代码语言:javascript
复制
imagePipeline.prefetchToBitmapCache(imageRequest, callerContext);

预取到磁盘或位图缓存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40819173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档