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í)長 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簡單加載動(dòng)畫用法:
如果添加.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ù):
這樣寫會(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í)長 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; } })
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android引導(dǎo)用戶開啟自啟動(dòng)權(quán)限的方法
今天小編就為大家分享一篇android引導(dǎo)用戶開啟自啟動(dòng)權(quán)限的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07解決android.support.v4.content.FileProvide找不到的問題
這篇文章主要介紹了解決android.support.v4.content.FileProvide找不到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03基于Android CALL && SendMes Test的相關(guān)介紹
本篇文章小編為大家介紹,Android CALL && SendMes Test 需要的朋友參考下2013-04-04詳解RxJava2 Retrofit2 網(wǎng)絡(luò)框架簡潔輕便封裝
本篇文章主要介紹了詳解RxJava2 Retrofit2 網(wǎng)絡(luò)框架簡潔輕便封裝,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Android基于AdapterViewFlipper實(shí)現(xiàn)的圖片/文字輪播動(dòng)畫控件
這篇文章主要介紹了Android基于AdapterViewFlipper實(shí)現(xiàn)的圖片/文字輪播動(dòng)畫控件,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下2021-04-04Android計(jì)時(shí)器的三種實(shí)現(xiàn)方式(Chronometer、Timer、handler)
這篇文章主要介紹了Android計(jì)時(shí)器的三種實(shí)現(xiàn)方式,Chronometer、Timer、handler計(jì)時(shí)器的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11教你一步步實(shí)現(xiàn)Android微信自動(dòng)搶紅包
自從微信添加搶紅包的功能,微信的電商之旅算是正式開始正式火爆起來。但是作為Android開發(fā)者來說,我們首先考慮的是如何實(shí)現(xiàn)Android微信自動(dòng)搶紅包呢,下面我們來一起看看吧。2016-08-08android自定義Camera實(shí)現(xiàn)錄像和拍照
這篇文章主要為大家詳細(xì)介紹了android自定義Camera實(shí)現(xiàn)錄像和拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android組件DrawerLayout仿網(wǎng)易新聞v4.4側(cè)滑菜單
這篇文章主要為大家詳細(xì)介紹了Android組件DrawerLayout仿網(wǎng)易新聞v4.4側(cè)滑菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01