日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android画图学习总结(四)——Animation(中)

發(fā)布時間:2025/5/22 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android画图学习总结(四)——Animation(中) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Android畫圖學(xué)習(xí)總結(jié)(四)——Animation(上)中詳細(xì)介紹了Tween Animation的定義、使用,由于篇幅有限,很多中重要的方面沒有說明,這篇文章一方面做個完整的總結(jié)說明,另外一方面補充說明上一篇幅遺漏的問題,幫助大家更好的理解Tween Animation。

對Tween Animation的本質(zhì)做個總結(jié):Tween Animation通過對 View 的內(nèi)容完成一系列的圖形變換 (包括平移、縮放、旋轉(zhuǎn)、改變透明度)來實現(xiàn)動畫效果。具體來講,預(yù)先定義一組指令,這些指令指定了圖形變換的類型、觸發(fā)時間、持續(xù)時間。這些指令可以是以 XML 文件方式定義,也可以是以源代碼方式定義。程序沿著時間線執(zhí)行這些指令就可以實現(xiàn)動畫效果。

在這里,我們需要對2個問題進(jìn)行深入的解析:

  • 動畫的運行時如何控制的?
  • 動畫的運行模式。
動畫的運行時如何控制的?

這個問題,我們也就也就是上一篇幅中提到的Tween Animation,估計大家對什么是Interpolator、到底有什么作用,還是一頭霧水,在這里做個詳細(xì)的說明。按照Android SDK中對interpolator的說明:interpolator定義一個動畫的變化率(the rate of change)。這使得基本的動畫效果(alpha, scale, translate, rotate)得以加速,減速,重復(fù)等。

用通俗的一點的話理解就是:動畫的進(jìn)度使用 Interpolator 控制。Interpolator 定義了動畫的變化速度,可以實現(xiàn)勻速、正加速、負(fù)加速、無規(guī)則變加速等。Interpolator 是基類,封裝了所有 Interpolator 的共同方法,它只有一個方法,即 getInterpolation (float input),該方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation。Android 提供了幾個 Interpolator 子類,實現(xiàn)了不同的速度曲線,如下:

AccelerateDecelerateInterpolator在動畫開始與介紹的地方速率改變比較慢,在中間的時候加速
AccelerateInterpolator在動畫開始的地方速率改變比較慢,然后開始加速
CycleInterpolator動畫循環(huán)播放特定的次數(shù),速率改變沿著正弦曲線
DecelerateInterpolator在動畫開始的地方速率改變比較慢,然后開始減速
LinearInterpolator在動畫的以均勻的速率改變

對于 LinearInterpolator ,變化率是個常數(shù),即 f (x) = x.
public float getInterpolation(float input) {
return input;
}
Interpolator其他的幾個子類,也都是按照特定的算法,實現(xiàn)了對變化率。還可以定義自己的 Interpolator 子類,實現(xiàn)拋物線、自由落體等物理效果。

動畫的運行模式

動畫的運行模式有兩種:

  • 獨占模式,即程序主線程進(jìn)入一個循環(huán),根據(jù)動畫指令不斷刷新屏幕,直到動畫結(jié)束;
  • 中斷模式,即有單獨一個線程對時間計數(shù),每隔一定的時間向主線程發(fā)通知,主線程接到通知后更新屏幕;
額外補充說明:Transformation 類

Transformation 記錄了仿射矩陣 Matrix,動畫每觸發(fā)一次,會對原來的矩陣做一次運算, View 的 Bitmap 與這個矩陣相乘就可實現(xiàn)相應(yīng)的操作(旋轉(zhuǎn)、平移、縮放等)。Transformation 類封裝了矩陣和 alpha 值,它有兩個重要的成員,一是 mMatrix,二是 mAlpha。Transformation 類圖如下所示:

總結(jié)說明

圖形變換通過仿射矩陣實現(xiàn)。圖形變換是圖形學(xué)中的基本知識,簡單來說就是,每種變換都是一次矩陣運算。在 Android 中,Canvas 類中包含當(dāng)前矩陣,當(dāng)調(diào)用 Canvas.drawBitmap (bmp, x, y, Paint) 繪制時,Android 會先把 bmp 做一次矩陣運算,然后將運算的結(jié)果顯示在 Canvas 上。這樣,編程人員只需不斷修改 Canvas 的矩陣并刷新屏幕,View 里的對象就會不停的做圖形變換,動畫就形成了。

轉(zhuǎn)自http://www.moandroid.com/

轉(zhuǎn)載于:https://blog.51cto.com/zensheno/498497

總結(jié)

以上是生活随笔為你收集整理的Android画图学习总结(四)——Animation(中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。