Android屬性動畫實戰教程開篇

2021-07-09 09:01:07 字數 3119 閱讀 3193

本系列部落格會分倆篇

本篇部落格主要是會介紹屬性動畫**使用和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動畫的)

第二個引數 動畫作用的屬性(這個地方需要注意,在設定屬性的時候,要做到倆點要求,一下內容來自android開發藝術探索

1.設定的屬性要有對應的set/get方法,否則可能無效果或者是奔潰;

2.set方法裡面必須實現對屬性的改變可以通過某種方式反映出來,否則無效果。

第三個引數是乙個可變引數,進行指定動畫的變化過程值

setduration()

設定動畫指定時間,長整形,單位 毫秒

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」 多個動畫執行的邏輯,順序執行,一起執行

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」 動畫操作屬性變化型別

通過對比會發現,在使用屬性動畫的時候,通過**實現會更加的簡單實用,在xml檔案中實現動畫,會有好多侷限,比如平移的時候位置的設定等等,所以推薦使用**實現屬性動畫

還要說明的一點是個人的理解,各位看不看隨便了

屬性動畫沒有復位這一說法,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是我...