[問題] 逐幀動畫讀取效能問題

看板AndroidDev作者 (小恐龍)時間9年前 (2014/12/22 12:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我現在在寫的app有一個ViewPager,其中一頁放的是GridView, GridView中的每個item都放一個ImageView來播不同的動畫。 因此每次滑到那一頁附近都會很卡(ViewPager會預讀左右兩頁) 本來要播逐幀動畫很簡單,在xml裡面用<animation-list>加入每一幀, 再用ImageView.setBackgroundResource設置動畫 最後再透過AnimationDrawable開始播放動畫 http://ppt.cc/qSnV 但是我發現在setBackgroundResource的時候UIThread會被卡住, 應該是同時播放太多動畫的關係,或是動畫張數太多。 但是setBackgroundResource又必須runOnUiThread。 所以我試著在Thread裡面先把動畫用resource.getDrawable拿出來, 再用setImageDrawable設置動畫給ImageView。 但是我又發現,getDrawable這個函式明明在Thread裡做卻還是會擋到UIThread 因為拿動畫跟設動畫分開來做所以稍微沒這麼卡了,但是還是不能接受。 最後只能在Thread裡面自己new一個AnimationDrawable,用addFrame一張一張把圖加進去 再透過ImageView.post回到UIThread才能setImageDrawable。 效果只能說是差強人意,滑到那一頁都還是會頓一下。 請問一下要播放逐幀動畫有沒有效率更好的方式? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.84.72 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1419221141.A.C7B.html
文章代碼(AID): #1KbvYLnx (AndroidDev)