影片只需要連續繪制圖片就可以形成影片,那么就可以改變引數,使引數連續變化就可以形成影片了
以移動圓為例:
//畫大圓的paint
private val paintBigCircle: Paint by lazy {
Paint().apply {
style = Paint.Style.FILL
color = Color.RED
}
}
canvas?.drawCircle(200f,200f,100,paintBigCircle)
繪制一個圓,前兩個(200f,200f)是圓的中心位置,
現在需要圓在水平方向上的移動影片,就定義一個浮點數型別代替200f,
private var smallCircleX = 0f
將上面的繪制圓改成:
canvas?.drawCircle(smallCircleX,200f,100,paintBigCircle)
使得圓在水平方向上運動就只需要改變圓距離x軸的距離,也就是圓中心x的位置
這時就可以與ValueAnimator(屬性影片,之前有寫)連起來用,可通過監聽
其資料變化,來賦值改變引數的變化
//小球移動的影片
valueAnimatorSmallCircle = ValueAnimator.ofFloat(0f,5.5f*87.5f).apply {
duration = 1000L
repeatCount = INFINITE
addUpdateListener {
it.animatedValue :是獲取影片的value值,在這里就是0f,到5.5f*87.5f之間的值
val value = https://www.cnblogs.com/luofangli/p/it.animatedValue as Float
smallCircleX = smallCircleBigX - value 將值賦給引數,改變其狀態
invalidate() 重繪界面,這時就會重新呼叫onDraw方法,重新繪制,繪制的值就是新的smallCircleX的值,
整個程序連起來就行形成影片
}
}.start() //啟動影片,啟動的是valueAnimatorSmallCircle的value值的變化
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/286128.html
標籤:Android
