自定義動(dòng)畫知識(shí)點(diǎn):
繪制
Invalidate觸發(fā)繪制(刷新)
ValueAnimator屬性動(dòng)畫
canvas畫布的一些操作:translate(重新映射畫布上的 (0,0) 位置)擅羞,alpha胜茧,scale(縮放當(dāng)前繪圖至更大或更屑缛小)替梨,rotate(旋轉(zhuǎn)當(dāng)前繪圖)
繪制圖前先理清圖像的關(guān)系:比如圓的半徑脓鹃,圓心在屏幕的位置
1揍障、創(chuàng)建動(dòng)畫的類繼承view敢靡,并實(shí)現(xiàn)構(gòu)造函數(shù)
2脾拆、定義動(dòng)畫圖像的各種屬性:半徑品腹、間距
要畫圖前首先要確定圖像的位置岖食,大小
可以畫圖像布局示意圖:
大圓半徑為3R,小圓半徑為1R舞吭,兩圓間距為0.5R泡垃。則可以得出:
布局圖像最大長度minWidth:(2*3R+2*R+0.5R)= 8.5R
布局圖像最大高度minHight:2*3R=6R
圓心位置:屏幕寬度為width,屏幕高度為hight
大圓心所在水平位置Cx:(width-minWidth)/ 2+3R
大圓心所在豎直位置Cy: hight/2
3羡鸥、通過onSizeChaged獲得對(duì)應(yīng)的尺寸變化
4蔑穴、onDraw方法進(jìn)行對(duì)應(yīng)的繪制
使用drawCircle需要:cx,cy惧浴,半徑存和,畫筆
因此需要自己配置畫筆:
實(shí)現(xiàn)動(dòng)畫效果:
duration:動(dòng)畫的持續(xù)時(shí)間
repeatCount:動(dòng)畫的重復(fù)
每次動(dòng)畫都重新繪制:invalidate()
同理:在創(chuàng)建一個(gè)動(dòng)畫
同時(shí)執(zhí)行動(dòng)畫:animator.playTogether()
啟動(dòng)動(dòng)畫和結(jié)束動(dòng)畫:
設(shè)置點(diǎn)擊事件:
初始化點(diǎn)擊事件:
并在main_Activity中調(diào)用init()即可實(shí)現(xiàn)動(dòng)畫: