我尝试通过 2 种方式在 android 上实现拖动:
- 画布上绘制。
- 触摸时具有边距变化的相对布局。
即使在强大的设备上,它也不够流畅。
我怎样才能使拖动更快?
最简单的方法(也是响应速度最快的)是在视图中处理触摸,当您处理 a 时MotionEvent.ACTION_MOVE
,只需View
从事件的原始坐标设置您的 'sx 和 y 点并调用view.invalidate()
.
如果您需要更高性能的替代方法来简单地调用invalidate()
和重绘视图内容,请使用 aSurfaceView
为您提供可以从任何线程绘制的绘图表面。您仍然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
,因此可以在后台线程上完成此绘图。
高温高压