電商_簡單瞭解Glide圖片請求框架

Glide圖片加載框架

詳細瞭解:https://muyangmin.github.io/glide-docs-cn/
Glide是一個快速高效的Android圖片加載庫,注重於平滑的滾動。Glide提供了易用的API,高性能、可擴展的圖片解碼管道(decode
pipeline),以及自動的資源池技術

Glide使用

implementation 'com.github.bumptech.glide:glide:4.9.0’

Glide.with(context) .load(myUrl) .into(imageView);

取消加載同樣很簡單: Glide.with(fragment).clear(imageView);

佔位符(Placeholder)

佔位符是當請求正在執行時被展示的 Drawable 。當請求成功完成時,佔位符會被請求到的資源替換。如果被請求的資源是從內存中加載出來的,那麼佔位符可能根本不會被顯示。如果請求失敗並且沒有設置 error Drawable ,則佔位符將被持續展示。類似地,如果請求的url/model爲 null ,並且 error Drawable 和 fallback 都沒有設置,那麼佔位符也會繼續顯示。

錯誤符(Error)

error Drawable 在請求永久性失敗時展示。error Drawable 同樣也在請求的url/model爲 null ,且並沒有設置 fallback Drawable 時展示。

縮略圖 (Thumbnail) 請求

Glide 的 thumbnail() API 允許你指定一個 RequestBuilder 以與你的主請求並行啓動。thumbnail()
會在主請求加載過程中展示。如果主請求在縮略圖請求之前完成,則縮略圖請求中的圖像將不會被展示。thumbnail() API
允許你簡單快速地加載圖像的低分辨率版本,並且同時加載圖像的無損版本,這可以減少用戶盯着加載指示器 【例如進度條–譯者注】 的時間。
thumbnail() API 對本地和遠程圖片都適用,尤其是當低分辨率縮略圖存在於 Glide 的磁盤緩存時,它們將很快被加載出來。
thumbnail() API 使用起來相對簡單: Glide.with(fragment) .load(url)
.thumbnail(Glide.with(fragment) .load(thumbnailUrl)) .into(imageView);

Glide設置圖片大小

.override(width,height) //圖片顯示的分辨率 ,像素值 可以轉化爲DP再設置

Glide裁剪

CenterCrop

CenterCrop()是一種“去除多餘”的裁剪方式,它會把ImageView邊界以外的部分裁剪掉。這樣一來ImageView會被填充滿,但是這張圖片可能不會完整地顯示出來(ps:因爲超出部分都被裁剪掉了)。

Glide .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .override(600, 200) // resizes the image to these dimensions (in pixel) .centerCrop() // this cropping technique scales the image so that it fills the requested bounds and then crops the extra. .into(imageViewResizeCenterCrop);

FitCenter

FitCenter()
是一種“中心匹配”的方式裁剪方式,它裁剪出來的圖片長寬都會小於等於ImageView的大小,這樣一來。圖片會完整地顯示出來,但是ImageView可能並沒有被填充滿。

Glide .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages[0]) .override(600, 200) .fitCenter() .into(imageViewResizeFitCenter);
public class ViewUtils {
 
    /**
     * 添加imageview
     * @param context 上下文
     * @param string 圖片地址
     * @return ImageView
     */
    public static ImageView addImageView(Context context,String string){
        final ImageView iv = new ImageView(context);
        iv.setScaleType(ImageView.ScaleType.CENTER_CROP); //設置ImageView的填充方式
        if(Util.isOnMainThread()) //判斷是否在主線程處理
            Glide.with(context).load(string).asBitmap().override(750,280).into(new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                    if(resource!=null){
                        Bitmap bitmap = BitmapCut.cutBitmap(resource); //調用裁剪圖片工具類進行裁剪
                        if(bitmap!=null)
                            iv.setImageBitmap(bitmap); //設置Bitmap到圖片上
                    }
                }
            }); //方法中設置asBitmap可以設置回調類型
        return iv;
    }
 
}

Glide緩存
在這裏插入圖片描述
磁盤緩存策略(Disk Cache Strategy)

DiskCacheStrategy 可被 diskCacheStrategy 方法應用到每一個單獨的請求。
目前支持的策略允許你阻止加載過程使用或寫入磁盤緩存,選擇性地僅緩存無修改的原生數據,或僅緩存變換過的縮略圖,或是兼而有之。 默認的策略叫做
AUTOMATIC ,它會嘗試對本地和遠程圖片使用最佳的策略。當你加載遠程數據(比如,從URL下載)時,AUTOMATIC
策略僅會存儲未被你的加載過程修改過(比如,變換,裁剪–譯者注)的原始數據,因爲下載遠程數據相比調整磁盤上已經存在的數據要昂貴得多。對於本地數據,AUTOMATIC策略則會僅存儲變換過的縮略圖,因爲即使你需要再次生成另一個尺寸或類型的圖片,取回原始數據也很容易。

指定 DiskCacheStrategy 非常容易:

GlideApp.with(fragment) .load(url) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(imageView);

Glide Gif和視頻

Glide.with(this).load("圖片地址:url").asGif().into(iv);

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

Glide優先級詳細瞭解https://www.jianshu.com/p/a4053bf71fee
GlideBitmap四大色彩模式詳細瞭解https://blog.csdn.net/awenyini/article/details/79743798

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章