【发布时间】:2013-02-27 05:55:51
【问题描述】:
我试图在canvas 上画一个正方形,但只运行MotionEvent.ACTION_DOWN,然后listener 停止。
这个想法是,当用户触摸屏幕时,它会获取 x1 和 y1 位置,并且每次触发 onTouch 时,它必须将 rect frim 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;
}
});
谁能给我一个例子。
【问题讨论】:
-
这里有问题吗?
-
您是否尝试为每个事件记录日志?
-
是的,只有 MotionEvent.ACTION_DOWN 被触发然后停止。
-
向你的类添加实现回调,就像这个最终类 Surface 扩展 SurfaceView 实现回调
-
需要检查与此侦听器相关的所有代码,因为您提供的部分在一般情况下工作正常。
标签: java android motionevent