本系列部落格會分倆篇
本篇部落格主要是會介紹屬性動畫**使用和xml中使用
關於view動畫和屬性動畫的區別不做過多的介紹,當然涉及到的地方會簡單的提一下。
好了廢話不多說,直接上內容
首先介紹**中使用屬性動畫首先介紹幾個比較重要的類
valueanimator
objectanimator
animatorset
其中valueanimator是乙個基類,他主要是實現了屬性動畫值的變化,沒有任何的動畫效果。
objectanimator繼承valueanimator,並且實現了對物件的屬性的操作,從而產生動畫效果。
animatorset這個類是乙個可以同時執行多個動畫效果的集合。
下面通過乙個列子介紹,實現textview在x軸方向的移動
objectanimator translationxanimator = objectanimator.offloat(propertyanim, "translationx",
currenttranslationx, -propertyanim.getwidth(), currenttranslationx);
translationxanimator.setduration(2000);
translationxanimator.start();
關於這段**的解析
offloat() 引數解析,
第乙個引數 動畫作用物件(任意物件,這地方也是屬性動畫區別與view動畫的)setduration()第二個引數 動畫作用的屬性(這個地方需要注意,在設定屬性的時候,要做到倆點要求,一下內容來自android開發藝術探索)
1.設定的屬性要有對應的set/get方法,否則可能無效果或者是奔潰;
2.set方法裡面必須實現對屬性的改變可以通過某種方式反映出來,否則無效果。
第三個引數是乙個可變引數,進行指定動畫的變化過程值
設定動畫指定時間,長整形,單位 毫秒start()
開始執行下面介紹xml中使用屬性動畫
這個就比較簡單了直接上**
<?xml version="1.0" encoding="utf-8"?>
xmlns:android=""
android:ordering="sequentially">
android:duration="2000"
android:propertyname="translationx"
android:valuefrom="0"
android:valueto="250"
android:valuetype="floattype"
android:repeatmode="reverse"
android:repeatcount="2"/>
android:duration="1000"
android:propertyname="alpha"
android:valuefrom="0"
android:valueto="1"
android:valuetype="floattype" />
android:ordering="together">
android:duration="2000"
android:propertyname="rotation"
android:valuefrom="0"
android:valueto="360"
android:valuetype="floattype"/>
android:duration="3000"
android:propertyname="scalex"
android:valuefrom="1.0"
android:valueto="2.0"
android:valuetype="floattype"/>
set>
set>
下面關於裡面幾個屬性進行一下簡單的說明
android:ordering=」sequentially」 多個動畫執行的邏輯,順序執行,一起執行通過對比會發現,在使用屬性動畫的時候,通過**實現會更加的簡單實用,在xml檔案中實現動畫,會有好多侷限,比如平移的時候位置的設定等等,所以推薦使用**實現屬性動畫android:propertyname=」scalex」 指定動畫操作的屬性
在api19 裡面新增了 android:propertyxname android:propertyyname 倆個更加細分的屬性
android:duration=」2000」 指定動畫執行的時間
android:repeatcount=」2」 指定動畫重複執行的次數
android:repeatmode=」reverse」 指定動畫重複執行的模式,倆種
1.重複
2.逆向
android:valuefrom=」1.0」 動畫操作屬性起始值
android:valueto=」2.0」 動畫操作屬性結束值
android:valuetype=」floattype」 動畫操作屬性變化型別
還要說明的一點是個人的理解,各位看不看隨便了
屬性動畫沒有復位這一說法,view動畫有。
這個地方其實可以很好的說明了view動畫的侷限,還有屬性動畫在view動畫上面的優勢,
因為view動畫只是效果的展示,並沒有實現改變view的屬性,所以正常情況在執行完復位是很有必要的,不會影響介面邏輯和各種事件;
但是屬性動畫則不同,屬性動畫是通過不停的改變物件的屬性,所以在執行完成後,所見即所得,沒有必要復位,不會對物件有影響,如果有需要,可以在動畫開啟前記錄下初始值,在動畫結束後進行賦值操作,實現復位。(該方法來來自一位群友的建議)
給你想要的原始碼
android屬性動畫
一 屬性動畫的工作原理,主要有三個步驟 1 計算時間流逝。android動畫系統呼叫,用0 1代表時間的流逝。0表示經過0 的時間,1表示經過100 的時間。2 根據timeinterpolator計算出乙個差值因素。timeinterpolator以第1步流逝的時間作為引數,根據運動規則得出另乙個...
android 屬性動畫
package com.example.objectanimator import android.animation.animator import android.animation.animatorlisteneradapter import android.animation.animato...
Android屬性動畫
android的動畫可以分為三種 補間動畫,幀動畫,屬性動畫。現在很多書籍種大部分都是簡單的描述補間動畫和幀動畫,屬性動畫的概念卻沒有提到,所以今天就全面的分析一下屬性動畫。屬性動畫實際操作的是view的屬性值,因此可以很靈活的實現各種效果,而不侷限於之前的幾種動畫。objectanimator是我...