前言
動畫主要的目的是讓UI的變動變?nèi)岷吞崩铮鰪娪脩趔w驗实蔽。
優(yōu)秀的動畫讓用戶感覺不到頁面的跳轉(zhuǎn)、感覺一切操作很自然谨读。
如果動畫過于浮夸局装,風格跟不上潮流,或者動畫的時間把握不好,反而會造成用戶體驗下降的尷尬情況铐尚。
首先聊聊動畫怎么實現(xiàn)(只談原理不聊代碼)
關(guān)鍵幀動畫
大概就像折線圖一樣拨脉,取其中的關(guān)鍵點,確定其位置塑径,然后將各個點連接起來女坑。
關(guān)鍵幀動畫就是將動畫拆散成幾段,將關(guān)鍵點的狀態(tài)實現(xiàn)统舀,然后為其創(chuàng)建補間動畫匆骗。
跟flash、PS誉简、AE之類的沒什么區(qū)別碉就。
最基礎的關(guān)鍵幀動畫只要兩幀就夠了。那么你只要能把起止狀態(tài)的頁面畫出來闷串,就足夠了瓮钥。比如透明度漸變、縮放烹吵、位移碉熄、旋轉(zhuǎn)等等。
復雜一點的肋拔,也就多幾個關(guān)鍵幀而已锈津,一般是組合動畫,比如一個按鈕點擊之后凉蜂,放大一個單位琼梆,縮小兩個單位,再放大一個單位窿吩,一個有點彈性的動畫就做好了茎杂。當然用阻尼這些東西會更簡單,但是有些情況阻尼參數(shù)不好拿捏纫雁,像這種簡單動畫我更傾向于用關(guān)鍵幀實現(xiàn)它煌往。
路徑動畫
路徑動畫就復雜一點了,如果讓你位移的動畫轉(zhuǎn)彎先较,關(guān)鍵幀方式就比較難處理了携冤。路徑動畫的難點在于路徑的繪制,如果你把你的動畫的過程所走的路徑畫出來闲勺,那么路徑動畫就手到擒來了。需要注意的就是扣猫,繪制路徑其實是無數(shù)個關(guān)鍵路徑組成的菜循,其實就是多關(guān)鍵幀的位移動畫。所以想要動畫順暢申尤,要注意關(guān)鍵路徑的分布癌幕。
交互式動畫
交互式動畫跟以上兩個都不同衙耕,比如我要做一個復雜的位移動畫,關(guān)鍵幀和路徑方式當然都能做勺远,但是無論怎么做橙喘,路徑之間都會有很大的間隔,而如果用戶用手指去拖動一個視圖移動呢胶逢?如果每毫秒都能獲取到當前拖動到的位置厅瞎,那么這個路徑將會有無數(shù)個關(guān)鍵幀組成,無數(shù)個關(guān)鍵幀意味著什么初坠?動畫將會非常流暢和簸。配合手勢,交互式動畫會讓用戶有掌控一切的感覺碟刺。
阻尼系數(shù)和變速動畫
阻尼系數(shù)這個概念我也說不準锁保,就像彈簧一樣,拉伸的彈簧突然放松半沽,彈簧會收緊爽柒,但由于慣性,收緊會超過一點者填,然后彈簧又會拉伸浩村,超過一點又會收緊,像這樣逐漸衰退的過程幔托。動畫中使用帶阻尼的動畫穴亏,會讓動畫效果更加俏皮,有些動畫也能更加擬物化重挑,比如果凍動畫之類的嗓化。
變速動畫主要就是動畫過程的速度不是勻速的,說著簡單谬哀,但是體驗大不相同刺覆,加速的下落動畫,會更加真實史煎,就像自由落體那樣谦屑。
動畫時間的藝術(shù)
動畫的持續(xù)時間是個很關(guān)鍵的問題。過快的動畫會體現(xiàn)不出動畫的作用篇梭,而過慢的動畫會讓用戶不耐煩氢橙。
比如一個按鈕,連續(xù)點擊會增加積分恬偷,一般人最快點擊速度按照每秒5下來算悍手,那么0.2秒的動畫效果,就不會阻礙用戶的交互,非常自然坦康,如果1秒的動畫竣付,那么用戶就會反感了。臥槽滞欠?古胆??我特么點了5下才成功1次筛璧?不打斷用戶交互的動畫逸绎,才算好的動畫。
總結(jié)
每一次投入實踐的好動畫隧哮,都是要一點點體驗桶良,一點點修改才能做好的,差距在毫秒之間沮翔,體驗千里之別陨帆。