2011-09-28 78 views
5

我需要創建逐幀動畫幀,但我有一些問題 我有撰寫我的動畫30個PNG圖像,我加載我AnimationDrawable與此代碼:AnimationDrawable幀持續時間的問題

 mCurrentAnimation = new AnimationDrawable(); 
     mCurrentAnimation.setOneShot(true); 
     int resId; 
     for (int j = 1; j < 31; j++) 
     {     
      resId = getResources().getIdentifier("resName", "drawable", "com.mindcolorstest.main"); 
      mCurrentAnimation.addFrame(getResources().getDrawable(resId), 1); 
     } 

和邏輯「 mCurrentAnimation.start()「開始 在mdpi設備上,動畫工作正常,但我有每幀的持續時間,在hdpi模擬器或設備上有一些麻煩,我有一些滯後,如果我會減少幀的持續時間(在mdpi或hdpi設備)動畫不會更快,就像存在每幀的最小持續時間一樣。 一些提示和技巧?我不知道我要做什麼Q_Q 無論如何,感謝

+0

爲什麼你在這裏使用for循環,圖像在定義的時間自己加載... –

+0

for循環只是爲了在對象中加載圖像AnimationDrawable ... mCurrentAnimation.start()將啓動圖像背景切換並創建結果動畫 –

+0

這是一種錯誤的方式,我猜想你正在顯示動畫的小部件.... –

回答

0

我同意這一點,即使在S4上,我做的或多或少與xml動畫列表相同,我每幀獲得更長的動畫時間,然後我已經設定。 (我已經把持續時間設置爲每幀3ms)。
我在每30幀週期和85幀的最低平均幀內輸入了16,16ms

這可能會或可能不會響應中的animate()scheduleSelf(mAnimationRunnable, now + 1000/60);。只是猜測,因爲1000/60 = 16,66什麼應該變成16 int/long cast ..

但它也可能來自代碼或硬件速度的其他限制。
我還沒有檢查過,如果這行代碼被調用,並造成這種情況,因爲我不能以某種方式打破那裏。
然而,我認爲沒有顯示是現實中的那麼快,所以它看起來很聰明..