2018-04-21—屬性動畫(1) 初步認識ObjectAnimator

在上一次時候官疲,我們講解了幀動畫和補間動畫搂漠,尤其是補間動畫迂卢,有一個小問題不知道大家發(fā)現(xiàn)沒有:

舉個簡單的例子,我們把一個圖片設(shè)置點擊事件状答,讓他吐司冷守。然后我們給他設(shè)置縮放,讓他縮放到0,0(就是消失)惊科,然后我們再點擊,看看會怎么樣:


我們發(fā)現(xiàn)我們把他變道最小了亮钦,點擊它原來的位置還是會吐司的馆截。相信有人已經(jīng)猜到今天我們要講什么了,沒錯蜂莉,我們?nèi)绻胍屗s放了以后點擊原來的位置不會吐司蜡娶,那么我們只需要用屬性動畫來實現(xiàn)這個功能就好了。


屬性動畫:

我們首先來對比一下屬性動畫和補間動畫的區(qū)別:


補間動畫和屬性動畫區(qū)別

很明顯了映穗,補間動畫知識改變了View顯示效果窖张,如位置變化,大小比例變化蚁滋,旋轉(zhuǎn)宿接,透明度變化,但是他只是從顯示上改變了這些辕录,而實際上相關(guān)聯(lián)的控件(Button睦霎、ImageView等View控件)他們的大小,位置走诞,旋轉(zhuǎn)角度副女,透明度這些屬性還是沒有變化的。

而屬性動畫就不一樣了蚣旱,我們每一次動畫所改變的效果碑幅,都是直接改變的View的相關(guān)屬性戴陡。

我們上一次學(xué)了補間動畫,現(xiàn)在學(xué)習(xí)屬性動畫的話會相對輕松點沟涨,其實還是對應(yīng)的那四種變換加上組合變換恤批,都是固定的邏輯。下面我們一起來看一下:

首先我們還是設(shè)置一下布局:

xml布局

一張圖片拷窜,一個按鈕實現(xiàn)點擊效果开皿。


Java實現(xiàn):

平移:

屬性動畫跟補間動畫不一樣,它對應(yīng)的類有一個叫做ObjectAnimation的類(還有一個ValueAnimation這個下次再說)篮昧,這個類可以實現(xiàn)我們四種變換方式赋荆。我們來上一下代碼大家就都清楚了:

ObjectAnimator animatorT = ObjectAnimator.ofFloat(img,"translationX",0,100);

animatorT.setDuration(2000);

animatorT.start();

我們新建了一個叫做ObjectAnimator的對象,這個對象就是我們所說的屬性動畫其中一個類懊昨,我們通過它里面的靜態(tài)方法ofFloat方法來獲取對象窄潭,我們看一下里面的參數(shù):

ofFloat方法參數(shù)

他有5個構(gòu)造方法,我們只看第一個酵颁,也是我們最常用的一個

第一個參數(shù)是我們要綁定的控件對象嫉你,我們綁定img,就是讓img控件進行一系列操作躏惋,

第二個參數(shù)是變換類型幽污,這里面有這么幾個參數(shù)

我們剛才讓他進行了x軸方向向右移動100的操作,所以屬性名字里面寫的是translationX簿姨。


最后一個參數(shù)是可變長參數(shù)距误,這個我們后面寫多少參數(shù)都可以,在上面我只寫了0,100兩個扁位,他的意思是x軸起始位置是偏移量0准潭,x軸結(jié)束位置是偏移量100。

如果我在里面再加一個0域仇,那么他會先向右平移100刑然,然后又回到原位。也就是說我們在里面添加多少數(shù)據(jù)暇务,他就會依次執(zhí)行泼掠。

可能有的同學(xué)會問了,這個沒有設(shè)置fillAfter啊般卑,他怎么結(jié)束后保留了最后樣式武鲁?這就是我們屬性動畫和補間動畫的區(qū)別了,我們屬性動畫在收到我們的數(shù)值之后蝠检,是直接改變了我們的位置沐鼠,而不僅僅是動畫效果。


2.旋轉(zhuǎn)

不多說,我們直接上代碼:

ObjectAnimator animatorR = ObjectAnimator.ofFolat(img,"Rotation",0,360,180);

animatorR.setDuration(3000);

animatorR.start();

有了上面的例子饲梭,大家這個應(yīng)該都可以看懂的吧乘盖,我們綁定了img控件,然后讓他的旋轉(zhuǎn)軸為垂直屏幕方向憔涉,然后先轉(zhuǎn)動到順時針360的方向上订框,然后又轉(zhuǎn)回剛才180的方向上,總共轉(zhuǎn)動時間為3秒兜叨。

那么關(guān)于縮放和透明度也是同樣的道理穿扳,在這里就不多說了。



XML實現(xiàn):

這個跟補間動畫一樣国旷,我們同樣可以通過xml來實現(xiàn)矛物。


animator目錄

首先我們要創(chuàng)建一個名為animator的目錄文件,然后在里面創(chuàng)建一個叫做anim_alpha的文件跪但。

<objectAnimator

????android:propertyName="alpha"

? ? android:valueFrom="1"

? ? android:valueTo="0"

? ? android:duration="3000"

? ? android:repeatCount="1">

<objectAnimator/>

我們把頭標(biāo)簽市值為objectAnimator履羞。

然后在里面加入相關(guān)屬性。

ObjectAnimator animatorT = (ObjectAnimator) AnimatorInflater.loadAnimator(this,R.animator.animator_alpha);

animatorT.setTarget(img);

animatorT.start();

我們通過AnimatorInflater類的loadAnimator方法來獲取我們剛才的xml文件屡久。我們來看一下效果:


漸變效果

關(guān)于其他的三種xml實現(xiàn)也是同樣的道理忆首。

下面我們來看一下如何實現(xiàn)屬性動畫的組合:



屬性動畫組合:

1.java實現(xiàn):


AnimatorSet類

屬性動畫組合對應(yīng)的是AnimatorSet類,我們只需要new他就好被环。

它對應(yīng)的主要有這四個方法糙及,play,before筛欢,with丁鹉,after。這四個方法里面全都是填入往后兒們的animator類悴能,但是先后執(zhí)行順序不一樣,分別對應(yīng)著開啟雳灾,最后漠酿,同步,最開始執(zhí)行谎亩。

我們來看一下效果:



我們注意到他是先執(zhí)行的after炒嘲,然后是play和with同時執(zhí)行,最后執(zhí)行的before匈庭。所以大家記住這個順序夫凸,無論怎么寫,都是這個執(zhí)行順序阱持。

2.XML實現(xiàn)


xml相對于java代碼實現(xiàn)組合夭拌,就輕松多了,下面的一些屬性大家都可以看懂,我這里只強調(diào)一下ordering這個屬性鸽扁,這個屬性有兩個值:together是同步蒜绽,而sequentially是按照我們寫入的順序依次執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桶现,一起剝皮案震驚了整個濱河市躲雅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骡和,老刑警劉巖相赁,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異慰于,居然都是意外死亡钮科,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門东囚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跺嗽,“玉大人,你說我怎么就攤上這事页藻〗凹蓿” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵份帐,是天一觀的道長璃吧。 經(jīng)常有香客問我,道長废境,這世上最難降的妖魔是什么畜挨? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮噩凹,結(jié)果婚禮上巴元,老公的妹妹穿的比我還像新娘。我一直安慰自己驮宴,他們只是感情好逮刨,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著堵泽,像睡著了一般修己。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迎罗,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天睬愤,我揣著相機與錄音,去河邊找鬼纹安。 笑死尤辱,一個胖子當(dāng)著我的面吹牛砂豌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啥刻,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼奸鸯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了可帽?” 一聲冷哼從身側(cè)響起娄涩,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎映跟,沒想到半個月后蓄拣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡努隙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年球恤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荸镊。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡咽斧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躬存,到底是詐尸還是另有隱情张惹,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布岭洲,位于F島的核電站宛逗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盾剩。R本人自食惡果不足惜雷激,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望告私。 院中可真熱鬧屎暇,春花似錦、人聲如沸驻粟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽格嗅。三九已至,卻和暖如春唠帝,著一層夾襖步出監(jiān)牢的瞬間屯掖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工襟衰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贴铜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像绍坝,于是被迫代替她去往敵國和親徘意。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容