作者clanguage (C語言)
看板AndroidDev
標題[問題] onDraw 速度很慢
時間Sun Mar 10 19:51:46 2013
想問一下 小弟有一個 Canvas 掛在 View 下面,
當我有觸控的 event 之後就會 invalidate 啟動 onDraw
我把所有的觸控點記起來做, 每次 invalidate 就會全部重畫
但是這樣的過程好像會很慢阿?
因為我每次都要透過 getHistorySize 取得所有的 touch 資訊
再用 loop 把資訊存在自己的結構內,
然後重劃的時候要根據 touch 的 id 來分開不同手指的線段
累積久了線段長度就會很大, 會非常的慢
不知道有沒有其他的辦法可以變快? 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.229.83.131
1F:→ qweqweqweqwe:累積很長一定會變慢的.. DEBUG裡面就有一個選項是 03/10 22:28
2F:→ qweqweqweqwe:畫出手指onTouch的軌跡圖 03/10 22:28
3F:→ qweqweqweqwe:多畫個幾圈也是悲劇 QQ 03/10 22:28
4F:→ lovelycateye:把之前的canvas弄成bitmap然後再畫上新的點不就好? 03/11 11:35
5F:→ the2046:invalidate()並非立即重繪, 系統會先做其他優先權更高 03/13 14:33
6F:→ the2046:的事情後在替你重繪. 03/13 14:34
7F:→ the2046:若要立即反應重繪, 你要研究 SurfaceView 03/13 14:35
8F:→ clanguage:謝謝囉 03/13 20:41
9F:推 hellogg1:建議呼叫invalidate(Rect rect)自己去控制要更新的畫面 03/14 11:26
10F:→ hellogg1:假若你每次都整個畫面重畫速度會很慢,加上自定義的Rect 03/14 11:27
11F:→ hellogg1:會加速動畫的繪製 03/14 11:27
12F:→ clanguage:謝謝 03/15 20:09