作者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