91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android應用中怎么對GIF動圖進行播放控制與監聽

發布時間:2020-12-05 15:57:19 來源:億速云 閱讀:626 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關Android應用中怎么對GIF動圖進行播放控制與監聽,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Android 中 GIF 動圖處理與監聽

剛開始第一個想到的便是 glide , 但是自認為 glide 不能夠控制 GIF 以及去監聽它,所以網上去搜尋別的方法。看到有一個方案是將圖片分幀,一張張的去用逐幀動畫來實現。

我開始懷疑給這個解決方案的人了,都什么時代了還做這種費力不討好,大量占用用戶內存的東西!于是乎動手前又仔細 Google 了一番,答案著實令我尷尬,glide 是可以控制 GIF 動畫的!!!

怒上代碼 :使用glide 加載 GIF 動圖

Glide.with(DoorActivity.this).load(R.drawable.opendoor).into(openDoorGif);

很簡單的一行代碼就可以搞定,以上方式圖片和動圖都可以加載(網絡鏈接亦可)

下面是只可以加載 GIF 動圖的寫法:

Glide.with(DoorActivity.this).load(R.drawable.opendoor).asGif().into(openDoorGif);

其實就多了個 asGIF

但是這種方式下的動圖播放一直是循環的,有什么方式可以停下來呢!沒遇到過千萬別說沒必要,假如現在有一個需求,需要點擊一下按鈕來播放一次 GIF 實現與用戶的交互呢?這個技能我想你肯定是要 get 的,因為類似需求你遲早會碰到!

下面寫法實現了對 GIF 動圖的控制

//handler發送消息成功的狀態碼
private static final int MESSAGE_SUCCESS = 4424;
//handler發送消息所攜帶的參數(持續時間)
private int duration;

/**
 * 加載開門Gif動圖(只播放一次)
 * @param view
 */
public void loadGif(View view){  
 Glide.with(this)
   .load(R.drawable.opendoor)
   .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);
     }
     //發送延時消息,通知動畫結束
     //以下兩個參數都是 int 型,記得如上的聲明
     handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
       duration);
      return false;
     }
    }) 
     //僅僅加載一次gif動畫
     //此處的參數 1 及時指明播放次數
    .into(new GlideDrawableImageViewTarget(openDoorGif, 1)); 
}

看完上述內容,你們對Android應用中怎么對GIF動圖進行播放控制與監聽有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会理县| 廊坊市| 卢湾区| 高青县| 平安县| 韩城市| 运城市| 海林市| 金溪县| 呼伦贝尔市| 富宁县| 阆中市| 沅陵县| 枞阳县| 哈密市| 奉节县| 竹北市| 建阳市| 渭南市| 朝阳市| 丽江市| 东乡| 东明县| 资讯| 靖江市| 平凉市| 万全县| 池州市| 分宜县| 富裕县| 禹城市| 嵩明县| 织金县| 彭水| 乃东县| 巴南区| 正安县| 嘉禾县| 崇仁县| 招远市| 通道|