[Android基礎知識]視圖動畫第二篇,Camera 3D效果

來源:互聯網
上載者:User
上一篇文章中,我為大家介紹了在android中自訂視圖動畫的方法,裡面用了一個變換矩陣的方法來進行動畫的處理,關於詳細的內容,可以參考我的上一篇文章:
[Android基礎知識]打造自己的動畫效果


      通過這篇文章裡介紹的變換矩陣,我們可以實現大多數的動畫效果,不過這種方式,大多實現的是一種2D效果,如果向實現三維空間中的效果又什麼方法呢?下面就為大家介紹Camera類,中文意思是網路攝影機,當然這個指的可不是我們手機上那個照相用的那個網路攝影機,這是一個邏輯概念,把我們手機的螢幕比作網路攝影機視窗,透過這個視窗,我們看到裡面顯示的東西(就是我們應用的介面),當然如果我們從不同的角度來看螢幕中的物體,自然就會呈現出一種立體效果,這裡所說的不同角度是什麼意思呢,比如桌子上有一個杯子,我們從正面看它是一個樣,從後面看又是一個樣,從上面看又是另一個樣。

      這個概念應該不難理解,而Camera類就是用來做這個事情的,來看看下面這段代碼:

  1.     private Camera camera = new Camera();
  2.     .......
  3.     protected void applyTransformation(float interpolatedTime, Transformation t) {
  4.             
  5.         final Matrix matrix = t.getMatrix();
  6.         
  7.         camera.save();
  8.         camera.translate(0.0f , 0.0f, (3000 - 3000.0f * interpolatedTime));
  9.         camera.rotateY(360 * interpolatedTime);
  10.         
  11.         camera.getMatrix(matrix);
  12.         
  13.         matrix.preTranslate(-halfWidth, -halfHeight);
  14.         matrix.postTranslate(halfWidth, halfHeight);
  15.         
  16.         camera.restore();
  17.     }

複製代碼

下面的講解基於我的上一篇文章的基本概念,如果對前置知識需要瞭解的話,可以參看上一篇文章。


    和上一篇文章類似,首先我們得到了一個變換矩陣,camera.save() 這句話是將當前的網路攝影機位置儲存下來,以便變換進行完成後恢複成原位,接下來調用camera.translate,這個方法接受3個參數,分別是x,y,z三個軸的位移量,我們這裡只將z軸進行了位移,已開始的位移是3000,隨著時間的推移,這個位移會越來越小。這就會形成這樣一個效果,我們的View從一個很遠的地方向我們移過來,越來越近,最終移到了我們的視窗上面~

      camera.rotateY(360 * interpolatedTime) 這句話,是給我們的View加上旋轉效果,在移動的過程中,視圖還會移Y軸為中心進行旋轉。

      隨後的 camera.getMatrix(matrix) ,這個是將我們剛才定義的一系列變換應用到變換矩陣上面,調用完這句之後,我們就可以將camera的位置恢複了,以便下一次再使用。接下來的調用上一篇中已經介紹過了,就不再贅述了~,完成這段代碼之後,我們就可以看到3D動畫效果拉~


上個:

AnimDemo.zip

29.69 KB, 下載次數: 525, 下載積分: e幣 -1 元

範例程式碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.