• Android Glide使用【含圆角】本文转载


    1、依赖添加

    implementation group: 'com.github.bumptech.glide', name: 'glide', version: '4.11.0'

    2、加载网络图片

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             String url =  "http://www.qq745.com/uploads/allimg/141106/1-141106153Q5.png" ;
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(url).
                     asBitmap().  //强制处理为bitmap
                     into(targetView); //显示到目标View中
         }
    }

    3、加载资源图片

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             int  resourceId = R.drawable.test;
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(resourceId).
                     asBitmap().
                     into(targetView);
         }
    }

    4、加载本地文件图片

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             File file =  new  File(Environment.getExternalStorageDirectory(),  "test.jpg" );
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(file).
                     asBitmap().
                     into(targetView);
         }
    }

     5、从Uri中加载

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             Uri uri = Uri.parse( "android.resource://"  +  this .getPackageName() +  "/"  + R.drawable.test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(uri).
                     asBitmap().
                     into(targetView);
         }
    }

     6、加载gif图片

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(R.drawable.smail).
                     asGif(). //注意:这里显示的指明了要加载的是gif图片,当然即使不指明,glide也会自己判断.
                     into(targetView);
         }
    }

     7、设置默认图片和加载失败时显示的图片

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(R.drawable.test).
                     asBitmap().
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     into(targetView);
         }
    }

    8、淡入显示效果

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade(). //淡入显示,注意:如果设置了这个,则必须要去掉asBitmap
                     into(targetView);
         }
    }

    另外,crossFade还可以接收一个参数来设置淡入显示效果的持续时间,crossFade(int duration);如果你想直接显示图片,而不是淡入显示图片,则可以通过dontAnimate()方法设置.

    9、调整图片像素大小

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade( 1000 ). //淡入显示的时间,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 , 80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     into(targetView);
         }
    }

    10、设置CenterCrop,FitCenter

    CenterCrop,FitCenter都是对目标图片进行裁剪,了解过ImageView的ScaleType属性就知道,这2种裁剪方式在ImageView上也是有的,分别对应ImageView的ImageView.ScaleType.CENTER_CROP和mageView.ScaleType.FIT_CENTER的.

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade( 1000 ). //淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 , 80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     centerCrop(). //中心裁剪,缩放填充至整个ImageView
                     into(targetView);
         }
    }

    11、缓存策略设置

    内存缓存设置,通过skipMemoryCache(boolean)来设置是否需要缓存到内存,默认是会缓存到内存的.

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade( 1000 ). //淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 , 80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     centerCrop(). //中心裁剪,缩放填充至整个ImageView
                     skipMemoryCache( true ). //跳过内存缓存
                     into(targetView);
         }
    }

    磁盘缓存,磁盘缓存通过diskCacheStrategy(DiskCacheStrategy)来设置,DiskCacheStrategy一共有4种模式:

    1. DiskCacheStrategy.NONE:什么都不缓存
    2. DiskCacheStrategy.SOURCE:仅缓存原图(全分辨率的图片)
    3. DiskCacheStrategy.RESULT:仅缓存最终的图片,即修改了尺寸或者转换后的图片
    4. DiskCacheStrategy.ALL:缓存所有版本的图片,默认模式
    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             targetView.setScaleType(ImageView.ScaleType.FIT_CENTER);
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade( 1000 ). //淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 ,  80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     centerCrop(). //中心裁剪,缩放填充至整个ImageView
                     skipMemoryCache( true ). //跳过内存缓存
                     diskCacheStrategy(DiskCacheStrategy.RESULT). //保存最终图片
                     into(targetView);
         }
    }

    12、设置图片请求的优先级

    Glide 可以用 Priority 枚举来设置图片的加载优先级,这样我们就可以针对那些需要显示的图片设置高的优先级了.

    Priority 有4种级别:

    • Priority.LOW
    • Priority.NORMAL
    • Priority.HIGH
    • Priority.IMMEDIATE
     public  static  void  loadImageWithHighPriority(Object url,ImageView imageView,  final  LoaderListener listener) {
            if  (url ==  null ) {
                if  (listener !=  null ) {
                    listener.onError();
                }
            }  else  {
                Glide.with(imageView.getContext()).
                        load(url).
                        asBitmap().
                        priority(Priority.HIGH). //高优先级
                        dontAnimate().
                        listener( new  RequestListener<Object, Bitmap>() {
                            @Override
                            public  boolean  onException(Exception e, Object model, Target<Bitmap> target,  boolean isFirstResource) {
                                if  ( null  != listener) {
                                    listener.onError();
                                }
                                return  false ;
                            }
     
                            @Override
                            public  boolean  onResourceReady(Bitmap resource, Object model, Target<Bitmap> target,  boolean  isFromMemoryCache,  boolean  isFirstResource) {
                                if  ( null  != listener) {
                                    listener.onSuccess();
                                }
                                return  false ;
                            }
                        }).into(imageView);
            }
        }

    13、设置加载缩略图

    通过设置缩略图,我们可以在显示目标图片之前先展示一个第分辨率或者其他图片,当全分辨率的目标图片在后台加载完成后,
    Glide会自动切换显示全像素的目标图片.

    设置缩略图有2种方式:
    通过thumbnail(float)指定0.0f~1.0f的原始图像大小,例如全像素的大小是500*500,如果设置为thumbnail为0.1f,即目标图片的10%,显示的缩略图大小就是50*50;

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
     
             Glide.with( this ).
                     load(R.drawable.test).
                     placeholder(R.drawable.bg_loading). //加载中显示的图片
                     error(R.drawable.bg_error). //加载失败时显示的图片
                     crossFade( 1000 ). //淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 ,  80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     centerCrop(). //中心裁剪,缩放填充至整个ImageView
                     skipMemoryCache( true ). //跳过内存缓存
                     diskCacheStrategy(DiskCacheStrategy.RESULT). //保存最终图片
                     thumbnail( 0 .1f). //10%的原图大小
                     into(targetView);
         }
    }

    通过thumbnail(DrawableRequestBuilder)方式来指定缩略图,该缩略图可以使用load的所有方式(网络,文件,uri,资源)加载.

    public  class  TestGlideActivity  extends  Activity {
         @Override
         protected  void  onCreate(Bundle savedInstanceState) {
             super .onCreate(savedInstanceState);
             setContentView(R.layout.activity_test);
             ImageView targetView = (ImageView) findViewById(R.id.iv_target);
             //缩略图请求
             DrawableRequestBuilder<String> thumbnailRequest = Glide
                     .with( this )
                     .load( "http://www.qq745.com/uploads/allimg/141106/1-141106153Q5.png" );
     
             Glide.with( this ).
                     load(R.drawable.test).
    //                placeholder(R.drawable.bg_loading).//加载中显示的图片
    //                error(R.drawable.bg_error).//加载失败时显示的图片
    //                crossFade(1000).//淡入淡出,注意:如果设置了这个,则必须要去掉asBitmap
                     override( 80 ,  80 ). //设置最终显示的图片像素为80*80,注意:这个是像素,而不是控件的宽高
                     centerCrop(). //中心裁剪,缩放填充至整个ImageView
                     skipMemoryCache( true ). //跳过内存缓存
                     diskCacheStrategy(DiskCacheStrategy.RESULT). //保存最终图片
                     thumbnail(thumbnailRequest). //设置缩略图
                     into(targetView);
         }

     14、圆角

    RequestOptions options = new RequestOptions().error(R.drawable.img_load_failure).bitmapTransform(new RoundedCorners(30));//图片圆角为30
    Glide.with(this).load(URL) //图片地址
                    .apply(options)
                    .into(ImagView);
  • 相关阅读:
    java 实现大顶堆
    (转)单调栈总结
    leetcode再次总结
    (转)jvm具体gc算法介绍标记整理--标记清除算法
    (转)java 多线程 对象锁&类锁
    maven 上传 jar 到本地私服
    记录一下faster rcnn
    yolov2训练ICDAR2011数据集
    MSE,ks,mAP,weight decay等名词解释
    python爬虫爬取指定用户微博图片及内容,并进行微博分类及使用习惯分析,生成可视化图表
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/15490643.html
Copyright © 2020-2023  润新知