標籤:位元影像 最簡 port animation 顯示 ade 第三方 launch 告訴
在android中,可能需要用來從網上擷取圖片的需求,那麼這個功能用第三方架構是最好的,因為第三方架構為我們封裝了很多的操作,比如glide架構,可以非同步載入圖片,並且可以設定緩衝方式和縮圖等一系列功能,下邊就介紹下怎麼使用。
首先添加gradle:
compile ‘com.github.bumptech.glide:glide:3.7.0‘
添加對應的許可權,訪問網路和訪問本機存放區:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
最簡單的使用的方法:
Glide .with(this) .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png") .into(imageView);
glide with的介紹:
- with(Context context). 使用Application上下文,Glide請求將不受Activity/Fragment生命週期控制。
- with(Activity activity).使用Activity作為上下文,Glide的請求會受到Activity生命週期控制。
- with(FragmentActivity activity).Glide的請求會受到FragmentActivity生命週期控制。
- with(android.app.Fragment fragment).Glide的請求會受到Fragment 生命週期控制。
- with(android.support.v4.app.Fragment fragment).Glide的請求會受到Fragment生命週期控制。
設定佔位圖和動畫
在圖片過大或者網上太慢時,可以設定為映像設定一個佔位圖,在映像載入出來之前先顯示佔位圖設定佔位圖的方式
還可以設定在映像載入失敗時顯示的映像
Glide.with(this).load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg") .placeholder(R.drawable.ic_launcher) //設定佔位圖,在載入之前顯示 .error(R.drawable.icon) //在映像載入失敗時顯示 .into(image);
在載入映像時,還可以設定映像顯示的動畫:
Glide.with(this).load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg") .placeholder(R.drawable.ic_launcher) .error(R.drawable.icon) .crossFade() //設定顯示動畫, .into(image);
crossFade()
有幾種重載的方法
crossFade(int duration)
:設定時間
crossFade(Animation animation, int duration)
:設定自訂的動畫和時間
crossFade(int animationId, int duration)
: 載入動畫資源和時間
縮圖glide也可以設定縮圖,即先載入縮圖,然後再載入原圖:
Glide .with( context ) .load( UsageExampleGifAndVideos.gifUrl ) .thumbnail( 0.1f ) .into( imageView2 );
緩衝
我們都知道映像的處理和顯示在Android中是最耗費記憶體的,很容易引起OOM的問題,一般在影像處理和顯示時,都會使用緩衝策略,記憶體緩衝或硬碟緩衝,在Glide
中也提供了不同的緩衝策略,預設的情況下會將顯示的映像進行記憶體緩衝,也可以設定不使用記憶體緩衝,調用方法skipMemoryCache(true)
,就告訴Glide
我們不打算使用記憶體緩衝,預設是使用記憶體緩衝的
Glide.with(this) .load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg") .skipMemoryCache(true) .into(image);
Glide
同時也提供了硬碟緩衝,硬碟緩衝的策略可以通過方法diskCacheStrategy()
來設定
Glide.with(this) .load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg") .diskCacheStrategy(DiskCacheStrategy.SOURCE) //不使用硬碟緩衝 .into(image);
硬碟緩衝策略
DiskCacheStrategy.NONE
: 不使用硬碟緩衝
DiskCacheStrategy.SOURCE
: 將原始映像緩衝在硬碟中
DiskCacheStrategy.RESULT
: 將顯示出來大小的映像緩衝在硬碟(預設緩衝策略)
DiskCacheStrategy.ALL
: 顯示的映像和原始映像都會緩衝
android glide的架構使用