glide 圖片加載


    使用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'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章