莫问天涯路几重,轻衫侧帽且从容。这篇文章主要讲述Android中的Glide加载图片相关的知识,希望能为你提供帮助。
注意:在android Studio的项目的build.gradle中添加:
compile ‘com.github.bumptech.glide:glide:3.6.1‘
然后同步一下
【Android中的Glide加载图片】目录:
- 使用Glide结合列表的样式进行图片加载
-
如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用
- 当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法
- 当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示
- 图片的缩放,centerCrop()和fitCenter()
- 显示gif动画
- 显示本地视频
- 缓存策略
- 优先级,设置图片加载的顺序
- 当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象
- 集成网络栈(okHttp,Volley)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (null == convertView) {
//.....
}
Glide
.with(context)
.load(imageUrls[position])
.into(holder.imageView);
return convertView;
}
@Override
public void onBindViewHolder(RVViewHolder holder, int position) {
Glide.with(MainActivity.this)
.load(args[position])
.into(holder.imageView);
}
Glide
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher) // can also be a drawable
.into(imageViewPlaceholder);
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);
//使用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);
Glide
.with( context )
.load( gifUrl )
.asGif() //判断加载的url资源是否为gif格式的资源
.error( R.drawable.full_cake )
.into( imageViewGif );
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with( context )
.load( Uri.fromFile( new File( filePath ) ) )
.into( imageViewGifAsBitmap );
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
缓存所有版本的图像(默认行为)
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 );
}
//括号中的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);
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:[email protected]‘
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:[email protected]‘
compile ‘com.mcxiaoke.volley:library:1.0.8‘
}
推荐阅读
- android 搭建https Server
- Android --AsyncTask异步任务
- Android补间动画笔记
- Android 使用Fragment界面向下跳转并一级级返回
- 解决某些Android Permission denied
- android的生命周期
- android WebView总 结
- Android_AsyncTask异步任务
- Android 学习笔记之切换主题