Android中的Glide加载图片
注意:在Android Studio的项目的build.gradle中添加:
compile 'com.github.bumptech.glide:glide:3.6.1'
然后同步一下
目录:
- 使用Glide结合列表的样式进行图片加载
-     如果使用的是RecyclerView,可以在Adapter的onBindViewHolder方法中使用
- 当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法
- 当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的图片显示
- 图片的缩放,centerCrop()和fitCenter()
- 显示gif动画
- 显示本地视频
- 缓存策略
- 优先级,设置图片加载的顺序
- 当不需要将加载的资源直接放入到ImageView中而是想获取资源的Bitmap对象
- 集成网络栈(okHttp,Volley)
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'
- }
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号