android課程設計小項目「android圖片載入框架」

今天講解的是谷歌推薦的圖片框架glide的詳細使用方法

首先打開AS工程-Android開發環境

添加依賴

implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'

添加網路許可權

<uses-permission android:name="android.permission.INTERNET" />

圖片的使用

1、載入圖片到imageView

Glide.with(Context context).load(Strint url).into(ImageView imageView);

2、各種形式的圖片載入到ImageView


// 載入本地圖片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 載入應用資源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 載入二進位流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 載入Uri對象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);

3、載入帶有占點陣圖

Glide.with(this).load(url).placeholder(R.drawable.loading).into(imageView);

占點陣圖目的為在目的圖片還未載入出來的時候,提前展示給用戶的一張圖片;

4、載入失敗 放置佔位符


Glide.with(this).load(url).placeholder(R.drawable.loading).error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)//關閉Glide的硬碟緩存機制
.into(imageView);


//DiskCacheStrategy.NONE: 表示不緩存任何內容。
//DiskCacheStrategy.SOURCE: 表示只緩存原始圖片。
//DiskCacheStrategy.RESULT: 表示只緩存轉換過後的圖片(默認選項)。
//DiskCacheStrategy.ALL : 表示既緩存原始圖片,也緩存轉換過後的圖片。

5、載入指定格式的圖片–指定為靜止圖片


Glide.with(this)
.load(url)
.asBitmap()//只載入靜態圖片,如果是git圖片則只載入第一幀。
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);

6、載入動態圖片


Glide.with(this)
.load(url)
.asGif()//載入動態圖片,若現有圖片為非gif圖片,則直接載入錯誤占點陣圖。
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);

7、載入指定大小的圖片


Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(100, 100)//指定圖片大小
.into(imageView)

8、關閉框架的內存緩存機制


Glide.with(this)
.load(url)
.skipMemoryCache(true) //傳入參數為false時,則關閉內存緩存。
.into(imageView);

9、關閉硬碟的緩存

Glide.with(this)
.load(url)
.diskCacheStrategy(DiskCacheStrategy.NONE) //關閉硬碟緩存操作
.into(imageView);

10、利用Glide將圖片載入到不同控制項或載入成不同使用方式

//1、通過自己構造 target 可以獲取到圖片實例
SimpleTarget<GlideDrawable> simpleTarget = new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation glideAnimation) {
imageView.setImageDrawable(resource);
}
};

//2、將圖片實例記載到指定的imageview上,也可以做其他的事情
public void loadImage(View view) {
String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
Glide.with(this)
.load(url)
.into(simpleTarget);
}

11、還有一些需要 要求預載入圖片,Glide 實現預載入


//a、預載入代碼
Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
     .preload();
 
//preload() 有兩種重載
 // 1、帶有參數的重載,參數作用是設置預載入的圖片大小;
//2、不帶參數的表示載入的圖片為原始尺寸;
 
//b、使用預載入的圖片
Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.SOURCE)
     .into(imageView);

12、監聽 Glide 載入的狀態

public void loadImage(View view) {
String url = "http://cn.bing.com/az/hprichbg/rb/TOAD_ZH-CN7336795473_1920x1080.jpg";
Glide.with(this)
.load(url)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target,
boolean isFirstResource) {
return false;
}

@Override
public boolean onResourceReady(GlideDrawable resource, String model,
Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imageView);
}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/202440.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-06 14:11
下一篇 2024-12-06 14:11

相關推薦

發表回復

登錄後才能評論