Android根据TouchEvent来绘图onDraw问题,重绘滞后严重!!
触摸屏每次有触控信息,就调用onTouchEvent()函数,在该函数里每有一个down,move,up消息时,都会让其new一个path对象,然后将其存到一个pathInfo list链表中,同时当保存完后,立即调用 invalidate() 进行刷新即调用onDraw()进行重绘list中所有的信息。
问题就是,这样list数据元素比较多后,当有在触控信息时,显示信息就会非常滞后(如手抬起后,一条线还没画完); 不知道怎么解决该问题,希望有懂的能指点指点。。。。
附上onDraw() 代码如下:
protected void onDraw(Canvas canvas) { //画背景颜色 canvas.drawColor(m_bkColor); Rect r = canvas.getClipBounds(); //表示的是获取控件需要重新绘制的区域 if (null != mBK_Bitmap)// Draw background bitmap. { canvas.drawBitmap(mBK_Bitmap, 0, 0, m_bitmapPaint); // } if(!mEarseFlag) { PathInfo pathInfo; int i = 0; int tmp = 0; int len = mPathInfo.size(); Log.i("-------onDraw----------", "-----------len===="+len); for (i =tmp; i < mPathInfo.size(); i++) { pathInfo = mPathInfo.get(i); if (Rect.intersects(r, pathInfo.rect))//intersects()判断两个rect区域是否有交集, { mPaint.setColor(pathInfo.color); mPaint.setStrokeWidth(pathInfo.penWidth); } canvas.drawPath(pathInfo.path, mPaint); } mPaint.setColor(0x22FF00); canvas.drawPath(mPath, mPaint); } }