Glide加载动态图片

首先我们先要去依赖一个githup:bumptech:glide:glide:3.7.0包;

1.使用Glide结合列表的样式进行图片加载:
1) 如果使用的是ListView,可以直接在Adapter的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;
    }


    2)    如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用:        

@Override
        public void onBindViewHolder(RVViewHolder holder, int position) {

            Glide.with(MainActivity.this)
                    .load(args[position])
                    .into(holder.imageView);
        }


     3)    当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法: 

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


    4)    当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示:

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


    5)    图片的缩放,centerCrop()和fitCenter():        

//使用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);

    6)    显示gif动画:

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


    7)    显示本地视频

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

    8)    缓存策略:

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 缓存所有版本的图像(默认行为)

    9)    优先级,设置图片加载的顺序:


Priority.LOW
Priority.NORMAL
Priority.HIGH
Priority.IMMEDIATE   

private void loadImageWithHighPriority() {  
    Glide
        .with( context )
        .load( mages[0] )
        .priority( Priority.HIGH )
        .into( imageViewHero );
}
private void loadImagesWithLowPriority() {  
    Glide
        .with( context )
        .load( images[1] )
        .priority( Priority.LOW )
        .into( imageViewLowPrioLeft );
    Glide
        .with( context )
        .load( images[2] )
        .priority( Priority.LOW )
        .into( imageViewLowPrioRight );
}


    10)    当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象:

//括号中的300,600代表宽和高但是未有作用
SimpleTarget target = new SimpleTarget<Bitmap>(300,600) {
                @Override
                public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                    holder.imageView.setImageBitmap(resource);
                }
            };
            Glide.with(MainActivity.this)
                    .load(args[position])
                    .asBitmap()
                    .into(target);


    11)    集成网络栈(okHttp,Volley):  

dependencies {  
    // your other dependencies
    // ...
    // Glide
    compile 'com.github.bumptech.glide:glide:3.6.1'
    // Glide's OkHttp Integration 
    compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
}

dependencies {  
    // your other dependencies
    // ...
    // Glide
    compile 'com.github.bumptech.glide:glide:3.6.1'
    // Glide's Volley Integration 
    compile 'com.github.bumptech.glide:volley-integration:1.3.1@aar'
    compile 'com.mcxiaoke.volley:library:1.0.8'
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值