Android動畫

動畫種類

1咧七、View動畫:View動畫支持四種動畫效果,分別是旋轉任斋、平移继阻、縮放、透明度(?只能實現(xiàn)四種動畫效果废酷,而且會有點擊事件失效的問題)穴翩。

2、幀動畫:通過順序播放一系列圖像從而產生動畫效果(如果播放的圖片尺寸過大容易造成OOM)锦积。

3、屬性動畫:通過動態(tài)地改變對象的屬性值達到動畫效果(可以對任意對象的屬性進行動畫而不僅僅是View)歉嗓。

屬性動畫

1丰介、ValueAnimator:是屬性動畫中的核心類,其作用是在一段時間內不斷對值進行改變(值的動畫)鉴分,實現(xiàn)值與值之間的動畫過渡哮幢,同時還能管理動畫的播放次數(shù)、播放模式志珍、設置動畫監(jiān)聽器等橙垢,通常結合AnimatorUpdateListener監(jiān)聽器并在回調方法onAnimatorUpdate()中獲取最新的屬性值,把屬性值作用于具體的對象上就能實現(xiàn)對象的動畫效果了伦糯。 ValueAnimator是非常靈活的實現(xiàn)柜某,它只操作屬性值本身,這個屬性值并不屬于某個具體對象敛纲,但卻能用于任何對象上喂击。

2、ObjectAnimator:是ValueAnimator的子類淤翔,其作用是可以直接對任意對象的任意屬性進行動畫操作翰绊,實現(xiàn)屬性值改變的同時可以作用于任意的具體的對象上,突破了View動畫只能作用View的限制旁壮。一般通過靜態(tài)工廠的方法來創(chuàng)建监嗜,主要有四個參數(shù):作用的對象、作用的屬性抡谐、初始值裁奇、目標值。

3麦撵、AnimatorSet:可以把多個動畫組合到一起

插值器Interpolator:根據(jù)時間流逝的百分比來計算當前屬性值改變的百分比框喳;也就是說插值器可以確定動畫的已執(zhí)行時間占總時間的百分比课幕。系統(tǒng)內置的有:線性插值器(勻速動畫)、加速減速插值器(動畫兩頭慢中間快)五垮、減速插值器(動畫越來越慢)乍惊。

估值器TypeEvaluator:根據(jù)當前屬性值改變的百分比來計算改變后的屬性值;也就是說估值器可以確定動畫在一段時間內某個時間點的屬性值放仗。系統(tǒng)內置的有:IntEvaluator(整型屬性)润绎、FloatEvaluator(浮點型屬性)、ArgbEvaluator(Color屬性)诞挨。通過evaluate()方法來計算屬性值莉撇,該方法有三個參數(shù):已執(zhí)行時間占總時間的百分比、屬性值的初始值惶傻、屬性值的最終值棍郎。

AnimatorListener:可以監(jiān)聽動畫的開始、結束银室、取消涂佃、重復播放

AnimatorUpdateListener:可以監(jiān)聽動畫的整個過程,因為動畫由許多幀組成蜈敢,所以每播放一幀就會執(zhí)行回調方法

屬性動畫的原理:屬性動畫要求作用的對象屬性提供該屬性的get()和set()方法辜荠,并設置該屬性的初始值和最終值,多次調用set()方法不斷改變屬性值抓狭,直到屬性值達到最終值伯病,從而實現(xiàn)動畫效果。

總結:如果想讓屬性動畫生效否过,必須滿足以下兩個條件:

(1)對象必須提供set()方法午笛,如果沒有設置初始值,還需要提供get()方法讓系統(tǒng)自動獲取初始值(如果不滿足則直接Crash掉)

(2)對象的set()方法對屬性所做的改變必須能帶來UI上的改變(如果不滿足則無動畫效果但不會Crash)

如果設置的屬性無效苗桂,可以通過以下方法解決

(1)給對象加上get()和set()方法季研,如果有權限的話

(2)用一個類來包裝原始對象,間接提供get()和set()方法

(3)使用ValueAnimator讓初始值改變到最終值誉察,并在實現(xiàn)AnimatorUpdateListener接口与涡,監(jiān)聽每一幀的動畫實現(xiàn)對屬性的改變

使用動畫需要注意的地方

1、OOM問題:盡量避免使用幀動畫

2持偏、內存泄漏:應及時關閉循環(huán)播放的動畫

3驼卖、兼容性問題:可以使用第三方庫進行Android3.0以下版本的適配

4、動畫的交互問題:在Android3.0之前的版本鸿秆,將View平移后酌畜,不管是View動畫還是屬性動畫都無法對View移動后的位置進行點擊事件的響應,但是原始位置可以響應點擊事件卿叽,在3.0以后的版本桥胞,View動畫依然無法響應恳守,但是屬性動畫改進了這一點

5、硬件加速:可以開啟硬件加速贩虾,提高動畫的流暢性


參考

《Android開發(fā)藝術探索》 第7章 Android動畫深入分析

《Android開發(fā)進階:從小工到專家》 第2章 View與動畫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末催烘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缎罢,更是在濱河造成了極大的恐慌伊群,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件策精,死亡現(xiàn)場離奇詭異舰始,居然都是意外死亡,警方通過查閱死者的電腦和手機咽袜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門丸卷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人询刹,你說我怎么就攤上這事谜嫉。” “怎么了范抓?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長食铐。 經常有香客問我匕垫,道長,這世上最難降的妖魔是什么虐呻? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任象泵,我火速辦了婚禮,結果婚禮上斟叼,老公的妹妹穿的比我還像新娘偶惠。我一直安慰自己,他們只是感情好朗涩,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布忽孽。 她就那樣靜靜地躺著,像睡著了一般谢床。 火紅的嫁衣襯著肌膚如雪兄一。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天出革,我揣著相機與錄音,去河邊找鬼渡讼。 笑死耳璧,一個胖子當著我的面吹牛,可吹牛的內容都是我干的展箱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼析藕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了账胧?” 一聲冷哼從身側響起竞慢,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤治泥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后居夹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體败潦,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡劫扒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狸膏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡湾戳,死狀恐怖,靈堂內的尸體忽然破棺而出砾脑,到底是詐尸還是另有隱情幼驶,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布韧衣,位于F島的核電站盅藻,受9級特大地震影響,放射性物質發(fā)生泄漏畅铭。R本人自食惡果不足惜萧求,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顶瞒。 院中可真熱鬧夸政,春花似錦、人聲如沸榴徐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耗帕,卻和暖如春穆端,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仿便。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工体啰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗽仪。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓荒勇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親闻坚。 傳聞我的和親對象是個殘疾皇子沽翔,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容