Glide 的一些使用

Glide 的一些使用

1、加载一些图片到圆形的控件中时,如果设置了placeholder
第一次显示placeholder,第二次才显示图片。

解决方法:

要调用dontAnimate()这个方法,不使用Glide的默认动画。

Glide.with(mContext)  
.load(url)   
.dontAnimate()  
.placeholder(R.drawable.ic_empty)  
.into(circleImageview);

2、wifi和移动流量下加载数据模式改变:

  • 使用网络加载

      Glide.with(imageView.getContext()).load(url)
                 .dontAnimate()
                 .placeholder(R.drawable.ic_place_holder_small)
                 .error(R.drawable.ic_error_small)
                 .into(imageView);
    
  • 使用缓存(如果有的话)

     Glide.with(imageView.getContext()).using(streamModelLoader).load(url)
             .dontAnimate()
             .placeholder(R.drawable.ic_place_holder_small)
             .diskCacheStrategy(DiskCacheStrategy.ALL)
             .into(imageView);
    
     private static StreamModelLoader streamModelLoader=new StreamModelLoader() {
     @Override
     public DataFetcher getResourceFetcher(final String model, int i, int i1) {
         return new DataFetcher() {
             @Override
             public InputStream loadData(Priority priority) throws Exception {
                 throw new IOException();
             }
    
             @Override
             public void cleanup() {
    
             }
    
             @Override
             public String getId() {
                 return model;
             }
    
             @Override
             public void cancel() {
    
             }
         };
     }};
    

3、加载Gif图片(gif图片暂用内存过大,小图情况下加载静态的图)

/**
     * 用于干货item,将gif图转换为静态图
     */
    public static void displayGif(String url, ImageView imageView) {

        Glide.with(imageView.getContext()).load(url)
                .asBitmap()
                .dontAnimate()
                .placeholder(R.drawable.ic_place_holder_small)
                .error(R.drawable.ic_error_small)
//                .skipMemoryCache(true) //跳过内存缓存
//                .crossFade(1000)
//                .diskCacheStrategy(DiskCacheStrategy.SOURCE)// 缓存图片源文件(解决加载gif内存溢出问题)
//                .into(new GlideDrawableImageViewTarget(imageView, 1));
                .into(imageView);
    }

4recyclerview 中优化加载,滑动时不加载图片

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            // SCROLL_STATE_FLING; //屏幕处于甩动状态
            // SCROLL_STATE_IDLE; //停止滑动状态
            // SCROLL_STATE_TOUCH_SCROLL;// 手指接触状态
            if(newState==RecyclerView.SCROLL_STATE_IDLE){
                Glide.with(context).resumeRequests();
            }else {
                Glide.with(context).pauseRequests();
            }
        }
    });
  • glide重新加载图片

     Glide.with(context).resumeRequests()
    
  • glide暂停加载图片

     Glide.with(context).pauseRequests()

你可能感兴趣的:(Glide 的一些使用)