Android開發之逐幀動畫優化

2021-07-30 01:27:23 字數 1628 閱讀 3025

android上如果使用逐幀動畫的話,可以很方便地使用animationdrawable,無論是先宣告xml還是直接**裡設定,都是幾分鐘的事,但使用animationdrawable有乙個致命的弱點,那就是需要一次性載入所有到記憶體,萬一幀數多了或者每張都比較大,很容易就報out of memory的異常了,所以有必要進行優化。

這裡我們利用view.postdelayed方法延時替換,這樣就能做到逐幀動畫的效果了,然後在替換之前,強制**imageview當前bitmap就可以減少記憶體消耗了,廢話少說,上**。

public class sceneanimation 

public sceneanimation(imageview pimageview, int pframeress, int pduration)

public sceneanimation(imageview pimageview, int pframeress,

int pduration, long pbreakdelay)

@suppresswarnings("unused")

private void play(final int pframeno)

mimageview.setbackgroundresource(mframeress[pframeno]);

if (!isstop)

}}, mdurations[pframeno]);

}private void playconstant(final int pframeno)

mimageview.setbackgroundresource(mframeress[pframeno]);

if (!isstop)

}}, pframeno == mlastframeno && mbreakdelay > 0 ? mbreakdelay

: mduration);

}public void stopplay()

public void playconstant()

private void recycleimage()

public void playonce(finishcallback callback)

private void playonce(finishcallback callback, int frameno) else

playonce(callback, frameno + 1);}}

}, frameno == mlastframeno && mbreakdelay > 0 ? mbreakdelay

: mduration);

}public inte***ce finishcallback

public boolean isrunning()

}

好了,講述完這個類,看一下如何使用吧,很簡單。

sceneanimation waitanim = new sceneanimation(waitimageview, waitresids, 100); // 指定繫結的imageview和資源陣列以及每張的延時

逐幀動畫優化到這裡結束了,後期我們或許可以繼續優化,就是防止乙個幀太大,載入時間過長,我們可以快取多張,而不是現在的只快取一張。

Android補間動畫 逐幀動畫

逐幀動畫 補間動畫補間動畫補間動畫 分為四種 1.透明度變化 2.旋轉 3.平移 4.放大縮小透明度變化 步驟 1.new alphaanimation fromalpha,toalpha 1.fromalpha 透明度的初始值 0.0f 1.0f之間 2.toalpha 結束時的透明度的值 0.0...

安卓動畫之逐幀動畫

安卓檢視控制項 view 使用方式分為兩種,一種是在res drawable 檔案目錄下建立xml檔案,其中使用的標籤為animation list,另一種方式為在 中動態設定。使用介紹 在使用逐幀動畫時,要預先準備好一組放進drawable資料夾內 3.1 xml方式 首先建立xml檔案,並設定資...

css逐幀動畫

我們經常使用css3中的animation動畫,比如這樣 fadein keyframes fadeinto 這樣就實現了延時1s,一共0.5s的淡入動畫。其中ease是animation timing function的預設值。animation timing function使用了三次貝塞爾 c...