Я пытаюсь нарисовать квадрат на canvas
, но запускается только MotionEvent.ACTION_DOWN
, а затем listener
останавливается.
Идея состоит в том, что когда пользователь касается экрана, он получает местоположения x1 и y1, и каждый раз, когда запускается onTouch
, он должен рисовать прямоугольник x1 y1 в текущем местоположении и, наконец, сохранять последнее местоположение в x2 y2, когда пользователь отпускает экрана.
Мой код выглядит так:
surfaceView.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
holder = surfaceView.getHolder();
canvas = holder.lockCanvas();
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
x1=event.getX();
y1=event.getY();
}
else if(event.getAction() == MotionEvent.ACTION_UP)
{
x2=event.getX();
y2=event.getY();
}
canvas.drawRect(x1, y1, event.getX(), event.getY(), paint);
holder.unlockCanvasAndPost(canvas);
return true;
}
});
Может ли кто-нибудь привести мне пример.
surfaceView
? Это экземплярSurfaceView
? - person GrIsHu   schedule 27.02.2013SurfaceView
. - person Nicolas Tyler   schedule 27.02.2013if(event.getAction() == MotionEvent.ACTION_DOWN) { x1=event.getX(); y1=event.getY(); canvas.drawRect(x1, y1, event.getX(), event.getY(), paint); }
- person GrIsHu   schedule 27.02.2013public boolean onTouch(View v, MotionEvent event) { if(event.getPointerCount()==2) { holder = surfaceView.getHolder(); canvas = holder.lockCanvas(); canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); x1=event.getX(0); y1=event.getY(0); x2=event.getX(1); y2=event.getY(1); canvas.drawRect(x1, y1, x2, y2, paint); holder.unlockCanvasAndPost(canvas); } return true; }
- person Nicolas Tyler   schedule 27.02.2013