在Android上免费拖动形状

时间:2012-06-25 16:11:56

标签: android

我尝试以两种方式实现对Android的拖动:

  1. Canvas with draw。
  2. 相对布局,触摸时边距会发生变化。
  3. 即使在强大的设备上也不够顺畅。

    如何更快地拖动?

2 个答案:

答案 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