Android使用glide加載gif動(dòng)畫設(shè)置播放次數(shù)
在使用glide加載gif動(dòng)畫,有時(shí)需要設(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) {
// 計(jì)算動(dòng)畫時(shí)長(zhǎng)
GifDrawable drawable = (GifDrawable) resource;
GifDecoder decoder = drawable.getDecoder();
for (int i = 0; i < drawable.getFrameCount(); i++) {
duration += decoder.getDelay(i);
}
//發(fā)送延時(shí)消息,通知?jiǎng)赢嫿Y(jié)束
handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
duration);
return false;
}
}) //僅僅加載一次gif動(dòng)畫
.into(new GlideDrawableImageViewTarget(imageview, 1));
glide簡(jiǎn)單加載動(dòng)畫用法:
如果添加.asGif(),這樣的話就只能加載gif文件,如果不加,既可以加載圖片也可以加載.gif。
解決加載gif文件非常慢的情況:
為其添加緩存策略
其中緩存策略可以為:Source及None,None及為不緩存,Source緩存原型.如果為ALL和Result就不行
DiskCacheStrategy.NONE 什么都不緩存
DiskCacheStrategy.SOURCE 僅僅只緩存原來(lái)的全分辨率的圖像。
DiskCacheStrategy.RESULT 僅僅緩存最終的圖像,即,降低分辨率后的(或者是轉(zhuǎn)換后的)
DiskCacheStrategy.ALL 緩存所有版本的圖像(默認(rèn)行為)
設(shè)置gif播放次數(shù):
這樣寫會(huì)報(bào)錯(cuò)的:
Glide.with(MainActivity.this).load(url).asGif().into(new GlideDrawableImageViewTarget(imageview, 1));
設(shè)置播放次數(shù)和播放監(jiān)聽的時(shí)候,不應(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//加載出錯(cuò)
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) {
// 計(jì)算動(dòng)畫時(shí)長(zhǎng)
GifDrawable drawable = (GifDrawable) resource;
GifDecoder decoder = drawable.getDecoder();
for (int i = 0; i < drawable.getFrameCount(); i++) {
duration += decoder.getDelay(i);
}
//發(fā)送延時(shí)消息,通知?jiǎng)赢嫿Y(jié)束
handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
duration);
return false;
}
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)仿iOS菊花加載圈動(dòng)畫效果
- Android繪制圓形百分比加載圈效果
- Android自定義加載圈動(dòng)畫效果
- android動(dòng)態(tài)加載布局文件示例
- Android使用控件ImageView加載圖片的方法
- Android實(shí)現(xiàn)跳動(dòng)的小球加載動(dòng)畫效果
- Android中Glide加載圓形圖片和圓角圖片實(shí)例代碼
- Android自定義Dialog實(shí)現(xiàn)加載對(duì)話框效果
- Android通用LoadingView加載框架詳解
- Android實(shí)現(xiàn)加載圈
相關(guān)文章
關(guān)于Kotlin的自動(dòng)類型轉(zhuǎn)換詳解
這篇文章主要給大家介紹了關(guān)于Kotlin的自動(dòng)類型轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Android開發(fā)實(shí)戰(zhàn)之漂亮的ViewPager引導(dǎo)頁(yè)
這篇文章主要介紹了Android開發(fā)實(shí)戰(zhàn)中漂亮ViewPager引導(dǎo)頁(yè)的制作過(guò)程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Android原生ViewPager控件實(shí)現(xiàn)卡片翻動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android原生ViewPager控件實(shí)現(xiàn)卡片翻動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android實(shí)現(xiàn)ListView的A-Z字母排序和過(guò)濾搜索功能 實(shí)現(xiàn)漢字轉(zhuǎn)成拼音
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)ListView的A-Z字母排序和過(guò)濾搜索功能,實(shí)現(xiàn)漢字轉(zhuǎn)成拼音功能2017-06-06
Android開發(fā)中編寫藍(lán)牙相關(guān)功能的核心代碼講解
這篇文章主要介紹了Android開發(fā)中編寫藍(lán)牙功能的核心部分講解,包括掃描和配對(duì)以及修改藍(lán)牙設(shè)備可見性等操作,需要的朋友可以參考下2016-02-02
Android編程之頁(yè)面切換測(cè)試實(shí)例
這篇文章主要介紹了Android編程之頁(yè)面切換測(cè)試,實(shí)例分析了Android實(shí)現(xiàn)頁(yè)面點(diǎn)擊切換的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
淺談Android開發(fā)中ListView控件性能的一些優(yōu)化方法
這篇文章主要介紹了Android開發(fā)中ListView控件性能的一些優(yōu)化方法,需要的朋友可以參考下2016-01-01

