Android使用glide加載gif動畫設(shè)置播放次數(shù)
在使用glide加載gif動畫,有時需要設(shè)置播放的次數(shù),然后播放玩一次或者幾次之后,需要在播放完做一些其他的操作,直接看代碼:
Glide.with(this)
.load(R.drawable.xiaoguo)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener<Integer, GlideDrawable>() {
@Override
public boolean onException(Exception arg0, Integer arg1,
Target<GlideDrawable> arg2, boolean arg3) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource,
Integer model, Target<GlideDrawable> target,
boolean isFromMemoryCache, boolean isFirstResource) {
// 計算動畫時長
GifDrawable drawable = (GifDrawable) resource;
GifDecoder decoder = drawable.getDecoder();
for (int i = 0; i < drawable.getFrameCount(); i++) {
duration += decoder.getDelay(i);
}
//發(fā)送延時消息,通知動畫結(jié)束
handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
duration);
return false;
}
}) //僅僅加載一次gif動畫
.into(new GlideDrawableImageViewTarget(imageview, 1));
glide簡單加載動畫用法:
如果添加.asGif(),這樣的話就只能加載gif文件,如果不加,既可以加載圖片也可以加載.gif。
解決加載gif文件非常慢的情況:
為其添加緩存策略
其中緩存策略可以為:Source及None,None及為不緩存,Source緩存原型.如果為ALL和Result就不行
DiskCacheStrategy.NONE 什么都不緩存
DiskCacheStrategy.SOURCE 僅僅只緩存原來的全分辨率的圖像。
DiskCacheStrategy.RESULT 僅僅緩存最終的圖像,即,降低分辨率后的(或者是轉(zhuǎn)換后的)
DiskCacheStrategy.ALL 緩存所有版本的圖像(默認(rèn)行為)
設(shè)置gif播放次數(shù):
這樣寫會報錯的:
Glide.with(MainActivity.this).load(url).asGif().into(new GlideDrawableImageViewTarget(imageview, 1));
設(shè)置播放次數(shù)和播放監(jiān)聽的時候,不應(yīng)加上.asGif()
Glide.with(MainActivity.this).load(url).into(new GlideDrawableImageViewTarget(imageview, 1));
new GlideDrawableImageViewTarget(imageview, 1),imageview是控件,1是播放次數(shù)
設(shè)置播放監(jiān)聽:
添加listener()
listener(new RequestListener<Integer, GlideDrawable>() {
@Override//加載出錯
public boolean onException(Exception arg0, Integer arg1,
Target<GlideDrawable> arg2, boolean arg3) {
return false;
}
@Override//加載完成
public boolean onResourceReady(GlideDrawable resource,
Integer model, Target<GlideDrawable> target,
boolean isFromMemoryCache, boolean isFirstResource) {
// 計算動畫時長
GifDrawable drawable = (GifDrawable) resource;
GifDecoder decoder = drawable.getDecoder();
for (int i = 0; i < drawable.getFrameCount(); i++) {
duration += decoder.getDelay(i);
}
//發(fā)送延時消息,通知動畫結(jié)束
handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
duration);
return false;
}
})
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Kotlin的自動類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Kotlin的自動類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Android開發(fā)實戰(zhàn)之漂亮的ViewPager引導(dǎo)頁
這篇文章主要介紹了Android開發(fā)實戰(zhàn)中漂亮ViewPager引導(dǎo)頁的制作過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08
Android原生ViewPager控件實現(xiàn)卡片翻動效果
這篇文章主要為大家詳細介紹了Android原生ViewPager控件實現(xiàn)卡片翻動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Android實現(xiàn)ListView的A-Z字母排序和過濾搜索功能 實現(xiàn)漢字轉(zhuǎn)成拼音
這篇文章主要為大家詳細介紹了Android實現(xiàn)ListView的A-Z字母排序和過濾搜索功能,實現(xiàn)漢字轉(zhuǎn)成拼音功能2017-06-06
Android開發(fā)中編寫藍牙相關(guān)功能的核心代碼講解
這篇文章主要介紹了Android開發(fā)中編寫藍牙功能的核心部分講解,包括掃描和配對以及修改藍牙設(shè)備可見性等操作,需要的朋友可以參考下2016-02-02
淺談Android開發(fā)中ListView控件性能的一些優(yōu)化方法
這篇文章主要介紹了Android開發(fā)中ListView控件性能的一些優(yōu)化方法,需要的朋友可以參考下2016-01-01

