Animator
概覽
這是一個(gè)為可以被啟動(dòng)媒吗、終結(jié)以及附帶動(dòng)畫監(jiān)聽器的動(dòng)畫提供基本支持的類的父類。
內(nèi)部類
- 接口Animator.AnimatorListener
該監(jiān)聽器用于接收動(dòng)畫發(fā)出通知械荷。 - 接口Animator.AnimatorPauseListener
該監(jiān)聽器用于接收當(dāng)動(dòng)畫暫停或者恢復(fù)時(shí)發(fā)出的通知虑灰。
構(gòu)造方法
Animator()
AnimatorSet
概覽
這個(gè)類用于將一個(gè)動(dòng)畫集合按特定的順序播放吨瞎。動(dòng)畫可以設(shè)置成同時(shí)播放、順序播放或者在一定的延時(shí)后播放穆咐。
有兩種方式可以向AnimatorSet添加動(dòng)畫:
- 調(diào)用playTogether()或者playSequentially()一次性地添加并播放動(dòng)畫颤诀。
- 使用play(Animator)與Builder類中的方法,逐個(gè)添加并播放動(dòng)畫对湃。
另外崖叫,可以建立一個(gè)動(dòng)畫之間循環(huán)依賴的AnimatorSet.比如,有動(dòng)畫A1,A2和A3拍柒,A1在A2前啟動(dòng)心傀,A2在A3前啟動(dòng),A3則在A1千啟動(dòng)拆讯。
內(nèi)部類Builder
該類是一個(gè)工具類脂男,用于為AnimatorSet添加動(dòng)畫恐锦,同時(shí)為不同的動(dòng)畫間添加聯(lián)系。該類的方法的目的是為了表達(dá)動(dòng)畫間的依賴關(guān)系時(shí)更加人性化疆液。在滿足需求的前提下,開發(fā)者也可以使用playTogether()和playSequentially()方法陕贮。但在一些情況下堕油,使用Builder類更方便。
Builder對(duì)象不能直接建立肮之,而是通過paly(Animator)掉缺。
比如,設(shè)置一個(gè)AnimatorSet將動(dòng)畫1和動(dòng)畫2同時(shí)播放戈擒,動(dòng)畫3在動(dòng)畫2結(jié)束后播放眶明,動(dòng)畫4則在動(dòng)畫3結(jié)束后播放:
AnimatorSet s = new AnimatorSet();
s.play(anim1).with(anim2);
s.play(anim2).before(anim3);
s.play(anim4).after(anim3);
AnimatorSet代碼示例
AnimatorSet set = new AnimatorSet();
set.playSequentially(downAnim, stretchAnim, upAnim);
set.start();
s.play(anim4).after(anim3);
ValueAnimator
概覽
該類為播放動(dòng)畫提供了簡單的時(shí)間引擎,該引擎可以計(jì)算動(dòng)畫時(shí)間并將其設(shè)置在目標(biāo)對(duì)象上筐高。
所有的動(dòng)畫可以使用單個(gè)時(shí)間脈沖搜囱。存在處理器(handler)中的時(shí)間脈沖可以確保屬性在UI線程中改變。
默認(rèn)情況下柑土,ValueAnimator使用非線性時(shí)間的插值蜀肘,該插值由類AccelerateDecelerateInterpolator實(shí)現(xiàn),實(shí)現(xiàn)方法為setInterpolator(TimeInterpolator)稽屏。
Animators可以通過代碼或者資源文件建立扮宠。下面是一個(gè)ValueAnimator的資源文件示例:
<animator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:repeatCount="1"
android:repeatMode="reverse"/>
ValueAnimator須配合監(jiān)聽器使用,并通過監(jiān)聽器的方法對(duì)目標(biāo)對(duì)象進(jìn)行更新狐榔。