Android動畫的實現原理 .

來源:互聯網
上載者:User

標籤:android   io   for   工作   時間   sp   on   c   app   

1.動畫運行模式

     獨行模式

     中斷模式

2.Animation類

      每個動畫都重載了父類的applyTransformation方法這個方法的主要作用是把一些屬性群組裝成一個Transformation類,這個方法會被父類的getTransformation方法調用。另外每個動畫還有個initialize方法,完成初始化工作,動畫開始前的一些準備工作。

3.Interpolator類

      定義動畫執行過程一些加速度減速度,為了我們後面Transformation來服務的。

4.Transformation類

      Transformation記錄了仿射矩陣Matrix,動畫每觸發一次,會對原來的矩陣做一次運算,View的Bitmap與這個矩陣相乘就可以實現相應的操作(旋轉、平移、縮放等)。

      Transformation類封裝了矩陣和alpha值,它有兩個重要的成員,一是mMatrix,二是mAlpha(控制透明度)。

5.View中實現動畫的過程

      圖形變換通過矩陣實現。圖形變換是圖形學中基本知識。簡單來說就是,每種變換都是一次矩陣運算。在Android中,Canvas類包含當前矩陣,當前調用Canvas.drawBitmap(bm,x,y,Paint)繪製時,android會先把bmp做一次矩陣運算,然後將運算結果顯示在Canvas上。這樣編程人員只需不斷修改Canvas的矩陣並重新整理螢幕,View裡對象就會不停的做圖形變換,動畫就形成了。

     View建立動畫對象,設定動畫屬性,調用invalidate重新整理螢幕,啟動動畫;

     invalidate方法觸發了onDraw函數;

     在onDraw函數中:

     調用動畫的getTransformation方法,得到目前時間點的矩陣

     將該矩陣設定成Canvas的當前矩陣

     調用canvas的drawBitmap方法,繪製螢幕。

     判斷getTransformation的傳回值,若為真,調用invalidate方法,重新整理螢幕進入下一幀;若為假,說明動畫完成。

Android動畫的實現原理 .

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.