Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android動畫六 XML中定義動畫詳解

android動畫六 XML中定義動畫詳解

編輯:關於Android編程

動畫View


 

屬性動畫系統允許動畫View對象並提供很多比view動畫系統更高級的功能。view動畫系統通過改變繪制方式來變換View對象,view動畫是被view的容器所處理的,因為View本身沒有要操控的屬性。結果就是View被動畫了,但View對象本身並沒有變化。在Android3.0中,新的屬性和相應的getter和setter方法被加入以克服此缺點。

屬性動畫系統可以通過改變View對象的真實屬性來動畫Views。而且,View也會在其屬性改變時自動調用invalidate()方法來刷新屏幕。View類中的能促進屬性動畫能力的的新屬性有:

translationX和translationY:這兩個屬性控制View的位置,它們是View被layout容器所設置的坐標位置的增量。

rotation,rotationX,和rotationY:這些屬性控制著在在2D(rotation屬性)和3D上的旋轉。

scaleX和scaleY:這些屬性控制View的2D縮放。

pivotX和pivotY:這些屬性控制著中心點的位置,旋轉和縮放變化對是圍繞它進行的。默認下,中心點在對象的中心位置。

x和y:這些代表了View在container中的最終位置,它是left和top與translationX和translationY的和。

alpha:代表了View的透明度。1(不透明)是默認值,0表示完全透明(看不見了)。

要動畫一個View對象的屬性,比如它的顏色或旋轉值,你所有需要做的就是創建一個屬性animator 然後指定你想動畫的View屬性。例如:

ObjectAnimator.ofFloat(myView,"rotation", 0f, 360f);

用ViewPropertyAnimator進行動畫

ViewPropertyAnimator提供了一個同時動畫某個View中的多個屬性的簡便方法,只需使用一個Animator對象。它的行為很像ObjectAnimator,因為它修改了真正的view屬性,但是它對於同時動畫多個屬性更在行。另外,使用ViewPropertyAnimator的代碼更加簡潔易懂。下面的代碼片段演示了當同時動畫一個View的x和y屬性時使用多個ObjectAnimator對象、單個ObjectAnimator、和ViewPropertyAnimator的不同。

多個ObjectAnimator 對象

 

ObjectAnimatoranimX = ObjectAnimator.ofFloat(myView, "x", 50f);

ObjectAnimatoranimY = ObjectAnimator.ofFloat(myView, "y", 100f);

AnimatorSetanimSetXY = new AnimatorSet();

animSetXY.playTogether(animX,animY);

animSetXY.start();

 

一個ObjectAnimator

 

PropertyValuesHolderpvhX = PropertyValuesHolder.ofFloat("x", 50f);

PropertyValuesHolderpvhY = PropertyValuesHolder.ofFloat("y", 100f);

ObjectAnimator.ofPropertyValuesHolder(myView,pvhX, pvyY).start();

 

ViewPropertyAnimator

 

myView.animate().x(50f).y(100f);

 

在XML中聲明動畫


 

屬性動畫系統使你能夠使用XML聲明屬性動畫而不用寫代碼。通過在XML中定義動畫,你可以輕易的在多個activity中重用你的動畫,並且可以更容易的修改動畫順序。

為了區分使用了新的屬性動畫API和使用了舊的view動畫框架的文件,從Android3.1開始,你應該將屬性動畫XML文件保存到res/animator/文件夾下(而不是res/anim/)。使用animator時,其文件夾的名字是可選的,但是當你要使用EclipseADT plugin (ADT 11.0.0+)中的layout編輯工具時就是必須的了,因為ADT只去res/animator/文件夾下搜尋屬性動畫資源。

下面的屬性動畫類具有支持XML中聲明的能力:

ValueAnimator-

ObjectAnimator-


 

要播放此動畫,你必須在你的代碼中inflateXML 資源成一個AnimatorSet對象,然後設置所有動畫的目標對象,再開始動畫。調用setTarget()為所有的子集AnimatorSet設置單個對象很簡單。下面的代碼演示了如何做:

 

AnimatorSetset = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,

R.anim.property_animator);

set.setTarget(myObject);

set.start();

 

property_animator是XML文件的名字。

   

 

 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved