屬性動畫與補間動畫的區別:
最大的區別是補間動畫就算控制項移動到任何位置,控制項本身位置還是不變。
而屬性動畫是直接改變控制項的位置。
從某種角度看,屬性動畫是增強版的補間動畫,其強大體現在兩方面:
補間(tween)動畫只能定義兩個關鍵幀在透明度、旋轉、傾斜、位移這4個方面的變化,而屬性動畫可以定義任何屬性的變化。
補間動畫只能對 ui 元件執行動畫,而屬性動畫幾乎可以對任何物件執行動畫。
需要的屬性:
android:duration :
動畫持續時間。預設值 300 毫秒。
android:interpolator :
動畫插值方式。與補間動畫中插值屬性作用類似。
插值器android:interpolator也要定義在set節點才有效
android:repeatcount :
動畫重複次數。repeatcount在animationset中不起作用
android:repeatmode :
元素組合 :
屬性動畫api:
使用 valueanimator 建立動畫
使用 objectanimator 建立動畫
// iview
.settranslationy(3);
/** *
引數一:設定動畫的物件
條件:一定要保證物件擁有getter setter方法 因為擁有getter setter方法的東西才能說是乙個屬性 *
引數二:設定屬性動作的名稱
iview
.set
translationy
(3); *
引數三:
view
的座標起點 *
引數四:座標的結束點 */
objectanimator
offloat
= objectanimator.
offloat
(iview
, "translationy"
, 0, 500);
offloat.start();
須為該物件對應的屬性提供 setter 方法,例如
setalpha(float value) 方法。
呼叫 objectanimator 的 ofint()、offloat() 或 ofobject() 工廠方法時 values... 引數只提供了乙個結束值。因而該物件應為該屬性提供乙個 getter 方法以返回乙個開始值。
如果動畫的物件是 view,為了能顯示動畫效果,可能還需在 onanimationupdate() 事件監聽方法中呼叫 view.invalidate() 方法來重新整理螢幕不過 view 定義的 setter 方法(如 setalpha()、settranslationx() )都會自動呼叫 invalidate() 方法來的顯示。(比如對 drawable 物件的 color 屬性執行動畫)。
監聽:addupdatelistener :監聽物件屬性值變化
監聽:addlistener :監聽動畫執行狀態
使用屬性動畫:
animator
loadanimator
= animatorinflater.
loadanimator
(this
, r.animator.
anima_file);
loadanimator
.settarget(
iview);
loadanimator
.start();
長寬 同時縮小 到原來一半
public
void
scale(view
cview)
@override
public
void
onanimationrepeat(animator
animation)
@override
public
void
onanimationend(animator
animation)
@override
public
void
onanimationcancel(animator
animation)
});
//valueanimator
專用偵聽,用來監聽屬性改變
offloat
.addupdatelistener(
new
animatorupdatelistener()
});offloat
.start();
} set用法 //
目的把左上角移動到右下角 //
使用set
動畫xy
軸都移動
public
void
set(view
cview)
Property 屬性動畫
單個屬性動畫 objectanimator offloat view,rotationx 0,180 setduration 3000 start 多個屬性動畫 多個屬性動畫組合 設定乙個中心點 view.setpivotx 0.5f view.setpivoty 0.5f 方式一 建立多個屬性動畫...
Property動畫之多屬性與關鍵幀
如果想同時改變多個屬性,一般的思路就是組合動畫,animatorset來處理,這裡還有一種比較先進點的方式 propertyvaluesholder 可以將多個屬性的改變放在乙個容器中,可以理解adapter的viewholder propertyvaluesholder是api level 11 ...
property屬性引數
1.讀寫屬性 預設是readwrite,會生成getter和setter方法 如果是readonly表示只會生成getter方法 2.setter處理 預設是assign 賦值 因此基本資料型別不需要加這個引數。因為在setter方法裡,我們經常要將乙個物件賦值給類的成員屬性,這個時候根據記憶體管理...