標籤:包括 mat ima set 維基百科 dimens fps raw 預設
一、動畫是什麼
Animation is a dynamic medium in which images or objects are manipulated to appear as moving images. -來自維基百科
翻譯:動畫是動態畫面。
二、android中的動畫
手機的螢幕是重新整理的,正常情況下頻率在60fps.也就是大約16ms介面會重新整理一次。
android所有的動畫的原理都是在這16ms之間,改變了顯示內容的地區,從而達到動畫的效果。
因為android的可視控制項的繪製都是在View上完成的,所以理解View對理解動畫有很大的協助。
三、簡述View的繪製過程
View的繪製過程分為三個步驟,測量、布局、繪製。
這三個詞很容易理解,下面重點解釋這三個步驟具體跟View產生了什麼樣的聯絡。
1.測量:
View的測量發生在measure,父布局調用child.measure方法來測量子view.而子view合適的反饋應該是測量完畢後通過setMeasureDimension方法設定好自己的大小,以便父view作參考。
View測量的過程常常發生在onMeasure方法中,測量完畢後調用setMeasureDimension實際是設定了View的mMeasureWidth和mMeasureHeight。
2.布局:
View的布局發生在layout中,同樣父布局調用child.layout(l,r,t,b)並傳遞給child設定好的位置來讓child設定自身的mLeft,mRight,mTop,mBottom。
一般情況會直接根據layout的建議來設定自己的mLeft,mRight,mTop,mBottom。
當然你可以忽略建議,自己設定,注意如果你改了mLeft,mTop,意味著你對父view對自己設定的左上方頂點不滿意。
如果你改變了(mRight-mLeft) 和 (mBottom-mTop) 意味著你對父view對自己設定的大小不滿意。--你應該已經知道此後View的getWidht 和 getHeight就是擷取的前面兩個減法運算的結果。
你可以在程式運行中隨時改變它們,而這種情境就包括動畫。
3.繪製
繪製發生的View的draw方法中。父View會通過drawchild會調用child的draw(x,x,x)三個參數的這個方法,其中有一個參數是canvas。
在draw(x,x,x)方法中,View預設先對canvas translate一下 到View的座標系中,然後進行硬體或軟體的繪製。
Android動畫原理-基礎篇(認識View)