閑著無聊突然想起以前想過要畫動態(tài)的五角星摔笤,然后計(jì)算五個(gè)點(diǎn)的時(shí)候感覺太燒腦了就改成畫六角星了烟央,不過實(shí)現(xiàn)過程都是一樣的洼滚。
大概效果是這樣
簡單來說就是不停調(diào)用View.onDraw方法實(shí)現(xiàn)動態(tài)效果罷了
下載地址
http://download.csdn.net/detail/zlasdy/9862174
再補(bǔ)充幾句,可能有人會納悶為什么這個(gè)Demo里沒有用到線程皮璧。
以往我們做動態(tài)的自定義View用到線程是因?yàn)閛nDraw方法里不要做耗時(shí)操作舟扎,比如多重for和bitmap等操作。這樣就必須用線程來完成這些耗時(shí)操作然后再調(diào)用postInvalidate()通知View刷新界面悴务。當(dāng)然睹限,用線程相對而言也比較好控制View的繪制過程。
最后提醒大家一句讯檐,如果要像這個(gè)Demo中這樣做一定要控制好postInvalidate()的運(yùn)行條件羡疗,不可以在onDraw中一直調(diào)用postInvalidate(),否則onDraw就會一直被調(diào)用别洪,是很損耗性能的叨恨。