2016-11-26 4 views
0

다음 코드를 사용하여 Fresco를 사용하여 Recycler View에서 이미지를로드합니다. 현재 이미지 로딩은 사용자가 항목으로 스크롤하는 즉시 시작되며 Fresco는 이미지를로드하고 나중에 또는 캐시에서 다음에 이미지를로드하기 위해 캐시합니다. 처음부터 이미지를 빠르게 불러올 수 있도록 미리 캐시하는 방법이 있습니까? 프레스코는 프리 페치를 지원프리 캐시하는 방법 2-3 Recycler에서 Fresco를 사용하는 이미지보기

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

} 
+0

github 페이지를 살펴보면 Fresco는 이미 비트 맵을 캐시합니다. – rhari

+0

예 프레스코는 사용자가 항목으로 스크롤 할 때 이미지를로드하고 캐시하기 시작합니다. 따라서 이미지가 서버에서 가져올 때 이미지를로드하는 데 처음으로 시간이 걸리고 다음에 프레스코에서 캐시에서 페치합니다. – Sam

답변

2

, 당신은 단순히 디스크 또는 비트 맵 캐시 프리 페치

imagePipeline.prefetchToDiskCache(imageRequest, callerContext); 

또는

imagePipeline.prefetchToBitmapCache(imageRequest, callerContext); 

를 호출 할 수 있습니다 http://frescolib.org/docs/using-image-pipeline.html

참조하십시오.