看板 AndroidDev 關於我們 聯絡資訊
我現在在寫的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