Android圖片加載庫Glide用法
Glide介紹
Glide是一個快速高效的Android圖片加載庫,註重於平滑的滾動。Glide提供瞭易用的API,高性能、可擴展的圖片解碼管道,以及自動的資源池技術。Glide 的主要目標是讓任何形式的圖片列表的滾動盡可能地變得更快、更平滑。
Android SDK 要求
Min Sdk Version – 使用 Glide 需要 min SDK 版本 API 14 (Ice Cream Sandwich) 或更高。
Compile Sdk Version – Glide 必須使用 API 27 (Oreo MR1) 或更高版本的 SDK 來編譯。
Support Library Version – Glide 使用的支持庫版本為 27。
使用前的準備
下載
Jar
你可以直接在 GitHub 下載最新的 jar 包。並且還需要包含 Android v4支持庫 的 jar 包。
Gradle
在build.gradle中加入如下依賴
implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
Maven
如果使用 Maven,同樣可以添加對 Glide 的依賴。再次強調,你依舊需要添加 Android 支持庫的依賴
<dependency> <groupId>com.github.bumptech.glide</groupId> <artifactId>glide</artifactId> <version>4.11.0</version> <type>aar</type> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r7</version> </dependency> <dependency> <groupId>com.github.bumptech.glide</groupId> <artifactId>compiler</artifactId> <version>4.11.0</version> <optional>true</optional> </dependency>
設置
從網絡中加載圖片
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
從本地存儲中加載圖片
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
基本用法
Glide.with(fragment)//傳遞activity或fragment .load(url)//本地地址或網絡地址 .into(imageView);//ImageView對象
這樣就可以將圖片加載到指定的ImageView中
在 ListView 和 RecyclerView 中的使用
在 ListView 或 RecyclerView 中加載圖片的代碼和在單獨的 View 中加載完全一樣
@Override public void onBindViewHolder(ViewHolder holder, int position) { String url = urls.get(position); Glide.with(fragment) .load(url) .into(holder.imageView); }
占位符
Glide有三種占位符,請求正在執行時展示placeholder Drawable,請求失敗則展示error Drawable,請求的url為null,那麼會展示fallback url
Glide.with(activity) .load(url) .placeholder(R.drawable.loading)//請求圖片時展示的圖片 .error(R.drawable.error)//請求失敗時展示的圖片 .fallback(R.drawable.fallback)//請求的圖片地址(url)為空時展示的圖片 .into(imageView);
選項
RequestOptions requestOptions = new RequestOptions() .placeholder(R.drawable.loading) .error(R.drawable.error); Glide.with(fragment) .load(url) .apply(requestOptions) .into(imageView);
apply()方法可以被調用多次,因此RequestOption可以被組合使用。如果 RequestOptions對象之間存在相互沖突的設置,那麼隻有最後一個被應用的RequestOptions會生效。
過渡動畫
在 Glide 中,Transitions 允許你定義 Glide 如何從占位符到新加載的圖片,或從縮略圖到全尺寸圖像過渡。Transition 在單一請求的上下文中工作,而不會跨多個請求。因此,Transitions 並不能讓你定義從一個請求到另一個請求的動畫(比如,交叉淡入效果)
DrawableCrossFadeFactory factory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build(); GlideApp.with(context) .load(url) .apply(requestOptions) .transition(withCrossFade(factory)) .placeholder(R.color.placeholder) .into(imageView);
除瞭交叉淡入效果,你也可以自定義
變換效果
當url地址為png時可能無法變換
RequestOptions requestOptions = new RequestOptions() .placeholder(R.drawable.loading) .error(R.drawable.error); Glide.with(MainActivity.this) .load(url) .apply(requestOptions) .transform(new CircleCrop())//圓角圖片 // .transform(new RoundedCorners(30))//圓形圖片角度統一 // .transform(new GranularRoundedCorners(30, 50, 70, 80))//四個角單獨指定角度 // .transform(new Rotate(90))//順時針旋轉角度 .into(imageView);
圓角變換效果
順時針旋轉效果
使用示例
loading, error是提前下載到本地的圖片,放在drawable中;url可以是一個網絡圖片的地址
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String url = "url of picture"; ImageView imageView = findViewById(R.id.image_view); Glide.with(this) .load(url) .placeholder(R.drawable.loading) .error(R.drawable.error) .into(imageView); } }
佈局文件
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
權限設置如下
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
下圖是加載網絡地址的情況。左圖傳入瞭錯誤的網絡地址,那麼就會展示error圖;如果傳入的網絡圖片地址正確,那麼就會將正確的圖片放入ImageView中;而在圖片加載未完成時,該ImageView會展示出loading圖
到此這篇關於Android圖片加載庫Glide用法的文章就介紹到這瞭,更多相關Android圖片加載庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Android如何使用Glide加載清晰長圖
- Android中如何使用Glide加載圖像
- Android Coil對比Glide深入分析探究
- Android 詳解沉浸式狀態欄的實現流程
- Android開發返回鍵明暗點擊效果的實例代碼