我尝试以两种方式实现对Android的拖动:
即使在强大的设备上也不够顺畅。
如何更快地拖动?
答案 0 :(得分:1)
最简单的方法(也是响应最快)是处理视图中的触摸,当您处理MotionEvent.ACTION_MOVE
时,只需从事件的原始坐标设置View
'sx和y点并调用view.invalidate()
。
答案 1 :(得分:0)
如果您需要更高性能的替代方案来简单地调用invalidate()
并重新绘制视图内容,请使用SurfaceView
,它为您提供可以从任何线程绘制的绘图表面。您仍然可以使用Canvas
进行绘制,您只需获取访问权限并随时使用以下代码进行绘制:
SurfaceView mSurface; //In your view hierarchy
SurfaceHolder = mSurface.getHolder();
Canvas c = mHolder.lockCanvas();
c.drawBitmap(...);
c.drawColor(...);
//...etc...etc...
mHolder.unlockCanvasAndPost(c);
而不是等待draw()
次调用。正如我所提到的,由于您在Canvas
上获得了锁定,因此可以在后台线程上完成此绘图。
HTH