Android中Glide加載圖片并實現圖片緩存
今天工作中遇到Glide的緩存問題,之前在項目中一直用Glide加載本地及網絡圖片,但是沒有考慮過緩存的問題,但是需求中需要提到了,所以在網上查了一下,再這里和大家簡單的分享一下Glide的使用方法以及緩存
首先,Glide是Github上開源的一個圖片庫,作者是bumptech,所以要使用的話,必須添加依賴:
compile 'com.github.bumptech.glide:glide:3.6.1'
加載方式:
Glide.with(context) .load("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png") .into(image);
加載方式很簡單,load加載url,into綁定控件。context,支持Activity,fragment,并與活動的生命周期保持一致,在onPause()暫停加載,onResume()恢復加載
其次,并不僅僅如此:
Glide.with(this).load("url").crossFade().placeholder(R.drawable.ic_user).error(R.drawable.ic_user).into(ivUser);
Glide還可以通過crossFade()來設置加載動畫,placeholder()默認加載圖片,error()加載出錯圖片等等,另外還支持圖片邊界縮放,例如centerCrop,fitCenter
Glide.with(this).load("url").centerCrop().error(R.drawable.ic_user).into(ivUser);
最后,Glide支持圖片緩存
Glide.with(this).load(“url”).diskCacheStrategy(DiskCacheStrategy.ALL).crossFade().centerCrop().error(R.drawable.ic_user).into(ivUser);
添加diskCacheStrategy(DiskCacheStrategy.ALL)就支持硬盤緩存了,因為Glide硬盤緩存會為不同寬高的同一張圖片進行二次緩存,所以需要設置DiskCacheStrategy.ALL,它會在下次加載的時候將全尺寸的圖片取出,根據設置的大小,在緩存。
如果你不想從緩存中讀取的話,Glide還提供了skipMemoryCache(boolean)方法,是否跳過緩存,哈哈,是不是很全呢?
以上是Glide的一些簡單使用方法,僅供參考。
當然Glide還可以設置大小,路徑,格式等
1 創(chuàng)建GlideModule
package com.mypackage; public class MyGlideModule implements GlideModule { @Override public void applyOptions(Context context, GlideBuilder builder) { // Apply options to the builder here. } @Override public void registerComponents(Context context, Glide glide) { // register ModelLoaders here. } }
2 在清單文件中添加meta-data tag標簽
<manifest ...> <!-- ... permissions --> <application ...> <meta-data android:name="com.mypackage.MyGlideModule" android:value="GlideModule" /> <!-- ... activities and other components --> </application> </manifest>
3 混淆
-keepnames class com.mypackage.MyGlideModule # or more generally: #-keep public class * implements com.bumptech.glide.module.GlideModule
4 設置硬盤緩存大小
builder.setDiskCache( new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
5 設置緩存位置
你可以使用內置的internalcachediskcachefactory放置你的緩存在應用程序內部緩存目錄:
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, cacheDirectoryName, yourSizeInBytes));
您還可以使用內置的externalcachediskcachefactory放置你的緩存在應用程序中的公共緩存目錄的SD卡:
builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, cacheDirectoryName, yourSizeInBytes));
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android編程實現帶有單選按鈕和復選按鈕的dialog功能示例
這篇文章主要介紹了Android編程實現帶有單選按鈕和復選按鈕的dialog功能,結合具體實例形式分析了Android實現帶有單選按鈕的dialog對話框及帶有復選按鈕的dialog對話框相關操作技巧,需要的朋友可以參考下2017-09-09Android 處理OnItemClickListener時關于焦點顏色的設置問題
這篇文章主要介紹了Android 處理OnItemClickListener時關于焦點顏色的設置問題的相關資料,需要的朋友可以參考下2017-02-02Android M(6.x)使用OkHttp包解析和發(fā)送JSON請求的教程
Android 6.0采用的SPDY支持HTTP上GZIP壓縮的傳輸,這使得OkHttp包的功能能夠進一步被利用,本文我們來總結一下Android M(6.0)使用OkHttp包解析和發(fā)送JSON請求的教程2016-07-07