Glide框架实现图片加载和视频播放总结

来源:互联网 发布:比尔精英英语 知乎 编辑:程序博客网 时间:2024/06/03 17:09

Picasso的内存开销比glide要大,而且加载图片的速度要慢一些。

1.在listview或者recycleView中使用

listview:在getview方法中使用:

@Override    public View getView(int position, View convertView, ViewGroup parent) {        if (null == convertView) {            //.....        }        Glide            .with(context)            .load(imageUrls[position])            .into(holder.imageView);        return convertView;    }

同理,recycleView中可以在Adapter的onBindViewHolder方法中使用。
我建议with()传参的时候传递Activity 和 Fragment给Glide,而不是Context。。将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载。

2.设置加载网络时等待的图片:

Glide    .with(context)    .load(UsageExampleListViewAdapter.eatFoodyImages[0])    .placeholder(R.mipmap.ic_launcher) // can also be a drawable    .into(imageViewPlaceholder);

3.设置加载失败后的图片显示

Glide    .with(context)    .load("http://futurestud.io/non_existing_image.png")    .error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded    .into(imageViewError);

4.设置图片的缩放

//使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的//Height是match_parent则图片就会被拉伸填充Glide.with(MainActivity.this)                    .load(args[position])                    .centerCrop()                    .into(holder.imageView);//使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围//该图像将会完全显示,但可能不会填满整个 ImageView。Glide.with(MainActivity.this)                    .load(args[position])                    .fitCenter()                    .into(holder.imageView);

5.加载gif动画

Glide      .with( context )    .load( gifUrl )    .asGif() //判断加载的url资源是否为gif格式的资源    .error( R.drawable.full_cake )    .into( imageViewGif );

6.显示本地视频

String filePath = "/storage/emulated/0/Pictures/example_video.mp4";Glide      .with( context )    .load( Uri.fromFile( new File( filePath ) ) )    .into( imageViewGifAsBitmap );

7.设置glide的缓存策略

Glide      .with( context )    .load( Images[0] )    .skipMemoryCache( true ) //跳过内存缓存    .into( imageViewInternet );Glide      .with( context )    .load( images[0] )    .diskCacheStrategy( DiskCacheStrategy.NONE ) //跳过硬盘缓存    .into( imageViewInternet );DiskCacheStrategy.NONE 什么都不缓存DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)

8.不将加载的资源放入ImageView而是获取资源的Bitmap对象:

//括号中的300,600代表宽和高但是未有作用SimpleTarget target = new SimpleTarget<Bitmap>(300,600) {                @Override                public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {                    //在这里对返回的bitmap进行处理                }            };            Glide.with(MainActivity.this)                    .load(args[position])                    .asBitmap()                    .into(target);

9.使用中的相关问题

①在列表中使用gilde的时候,会出现图片变形的情况,当刷新的时候才会正常显示,这个问题就是因为动画加载的过程中图片还没有下载下来导致的,这个时候把动画给禁止了就可以了,也可以把加载失败时候的图片给禁止掉,这样就可以直接加载出图片了,但是图片一定要可以下载下来.

.placeholder(R.drawable.icon_default).dontAnimate().into(iv);
1 2
原创粉丝点击