android 补间动画有停顿,Android动画原理分析(一)----补间动画
1、基本特點
補間動畫(Tween動畫),是android最早的動畫框架,從Android1.0開始就有。
功能:可以實現(xiàn)移動、旋轉(zhuǎn)、縮放、漸變四種效果以及這四種效果的組合形式。
實現(xiàn)形式:xml和代碼。
優(yōu)點:使用簡單效果流暢。
缺點:1、擴展性差,不支持自定義view;
2、動畫只改變控件在屏幕的位置,不改變控件的實際屬性。典型例子:Button執(zhí)行完動畫移動到另外位置,點擊事件還在原來的地方。
2、設(shè)計原理:
雖然補間動畫有點古老,但是他的設(shè)計思想挺值得分析和借鑒的。這一塊的源代碼位于package android.view.animation
下圖是補間動畫的主體類圖:
[外鏈圖片轉(zhuǎn)存失敗(img-MDTDeKMK-1562952161376)(https://upload-images.jianshu.io/upload_images/16477783-d0a4dd4f78ecd5b5.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
動畫的狀態(tài)數(shù)據(jù)存在Transformation類中,主要的兩個成員是mAlpha用了描述漸變效果和Matrix用來描述縮放旋轉(zhuǎn)和平移效果。
通過AnimationUtils可以加載xml描述的動畫或者通過調(diào)用構(gòu)造函數(shù)生成需要的動畫
動畫的中間值則是由TimeInterpolator子類通過各種算法插值得出。
而Animation和Interpolator是由AnimationUtils加載xml或者通過默認值創(chuàng)造出來。
整個補間動畫模塊是在View繪制時嵌入的,下圖是簡要的時序圖:
[外鏈圖片轉(zhuǎn)存失敗(img-NFz2iV4p-1562952161377)(https://upload-images.jianshu.io/upload_images/16477783-a84dfdb61b5fbaf2.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
VIew的繪制過程是很復(fù)雜的,這里只是介紹了一下調(diào)用補間動畫模塊的一個過程,如果有興趣可以自己查看Android源碼。上圖箭頭上是函數(shù)方法名。
3、使用指南
這一塊有很多人都寫過,也寫的很好。這里推薦一篇
Android高級動畫(1)
4、總結(jié)
(1)通過看源碼可以徹底明白補間動畫的優(yōu)缺點,實現(xiàn)原理及設(shè)計思路;
(2)只能實現(xiàn)平移、縮放、旋轉(zhuǎn)、漸變的原因是這一套框架中的元數(shù)據(jù)Transformation 只保存了alpha和一個描述幾何變換的矩陣。
(3)不支持自定義view的原因是動畫模塊的調(diào)用起點在viewgroup
/**
* This method is called by ViewGroup.drawChild() to have each child view draw itself.
*
* This is where the View specializes rendering behavior based on layer type,
* and hardware acceleration.
*/
boolean draw(Canvas canvas, ViewGroup parent, long drawingTime) {}
總結(jié)
以上是生活随笔為你收集整理的android 补间动画有停顿,Android动画原理分析(一)----补间动画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android动态32位so,Andro
- 下一篇: go语言1.4版本将支持面向androi