Android屬性動畫 - 平移動畫

1、簡介

上一篇中,詳細講解了Android補間動畫 - 縮放動畫的具體實現,補間動畫的其他動畫實現方式很類似,能夠將一個掌握透徹,其他也就迎刃而解,本篇文章主要講解屬性動畫-平移動畫的具體實現,同時也會概況屬性動畫的其他幾種類型,相信看完本篇文章會對屬性動畫有一個全面的認識。

話不多說,我們仍然以一個實例來講解,具體效果圖如下:

2、具體實現

對於屬性動畫的實現,我們可以不用在xml文件中實現具體動畫效果,直接通過代碼即可實現。

上圖中,xml佈局文件非常簡單,一個button和一個view,這裏就不再粘貼布局文件,僅僅提供java中的關鍵代碼。

// 屬性動畫-平移
private void startPopsAnimTrans(){
   if(objectAnimatorX == null){
       float [] x= {0f,60f,120f,180f};
       objectAnimatorX = ObjectAnimator.ofFloat(scaleAnimView,"translationX", x);
       objectAnimatorX.setDuration(2000);
   }
   objectAnimatorX.start();
}

代碼非常簡單,僅僅幾行即可實現,下面我們來分析ofFloat幾個參數具體代表什麼意思?

  • 第一個參數

第一個參數,很明顯,就是需要將動畫作用於哪個對象上面即哪個View上面,直接傳對應的View即可。

  • 第二個參數

第二個參數爲一個字符串,表示要實現的屬性動畫,可取值有:

alpha                       // 實現漸變效果
rotation                    // 實現旋轉旋轉效果
translationX             // 實現水平移動效果(左或右移動)
translationY             // 實現縱向移動效果(向上或者向下移動)
scaleX                     // 實現軸X縮放效果(放大或者縮小)
scaleY                     // 實現軸Y縮放效果(放大或者縮小)

  • 第三個參數

第三個參數表示動畫的具體效果,第三個參數是一個數組,數組的元素可以是1個、2個、3個或多個,下面我以當第二個參數爲translationX進行具體說明:

當float [] x= {60f},view會在原有的基礎上向右平移60px;

當float [] x= {0f, 60f},view 會從0點(即view在佈局中最初的位置)開始向右平移60px;

當float [] x= {0f, 60f, 0f},view從0點開始向右平移60px,在回到0點位置;

當float [] x= {0f, 60f, 80f, 100f, ……}, view從0點開始向右平移60px再平移80px,再平移100px ……;

需要注意的是,對於平移可以是大於1或小於-1這樣的數,如果當爲alpha時,取值區間爲0-1。

屬性動畫與補間動畫有一個重要區別就是,補間動畫對View的操作並不會改變View的實際位置,例如當對View添加點擊事件,只有最開始的位置點擊有效,但是屬性動畫,對View的位置做了實際的變化,點擊的位置會隨View的移動而移動。

3、其他案例

很多情況下,我們想讓一個按鈕能夠隨着某一系列座標點進行移動,這就涉及到多個屬性動畫的組合,例如下圖效果:

具體代碼如下:

private void startPopsAnimTrans(){
   if(objectAnimatorX == null){
      float [] x= {0f,60f,120f, 240f};
      float [] y= {0f,30f,220f,90f};
      objectAnimatorX = ObjectAnimator.ofFloat(scaleAnimView,"translationX", x);
      objectAnimatorX.setDuration(2000);
      objectAnimatorY = ObjectAnimator.ofFloat(scaleAnimView,"translationY", y);
      objectAnimatorY.setDuration(2000);
   }
   objectAnimatorX.start();
   objectAnimatorY.start();
}

這裏對Android屬性動畫中的平移動畫講解到此,相信通過此篇文章,對平移動畫的使用有全面的瞭解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章