【问题标题】:onTouchEvent() based on touch positiononTouchEvent() 基于触摸位置
【发布时间】:2019-08-30 07:47:10
【问题描述】:

在我的SurfaceView,我有以下方法。

@Override
    public boolean onTouchEvent(MotionEvent motionEvent) {

        if ((motionEvent.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {
            // ... do something
        }

        return true;
    }

我希望代码响应可能取决于我触摸的点。例如,在画布中,我有一些canvas.drawText(),对于它们中的每一个,我都希望有不同的操作。

【问题讨论】:

  • 你的意思是执行一些有趣的动作或动作事件动作?
  • @P.Juni 好吧,我的意思是一种 switch 语句:如果我单击某个 drawText(),代码会执行某些操作。如果我单击另一个 drawText(),代码会执行其他操作。
  • 好的,但是指向你触摸的地方意味着,如果你将手指放在某些 x/y 坐标下,一些drawText() 将执行?

标签: android surfaceview drawtext


【解决方案1】:

你可以试试这个

private View.OnTouchListener handleTouch = new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

    int x = (int) event.getX();
    int y = (int) event.getY();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            Log.i("TAG", "touched down");
            break;
        case MotionEvent.ACTION_MOVE:
            Log.i("TAG", "moving: (" + x + ", " + y + ")");
            break;
        case MotionEvent.ACTION_UP:
            Log.i("TAG", "touched up");
            break;
    }

    return true;
}
};

然后设置视图

myView.setOnTouchListener(handleTouch);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-08
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多