📜  如何在 Android 中获取屏幕的触摸坐标?(1)

📅  最后修改于: 2023-12-03 15:38:12.597000             🧑  作者: Mango

在 Android 中获取屏幕的触摸坐标

在 Android 开发中,获取屏幕触摸坐标是一项常见的任务。Android 系统提供了多种方法来获取屏幕的触摸坐标,下面将介绍其中一种常见的方法。

获取触摸事件

Android 中的触摸事件是通过监听 View 的 onTouchEvent 事件来获取的。我们可以重写该方法来获取触摸事件。

@Override
public boolean onTouchEvent(MotionEvent event) {
    // 处理触摸事件
    return super.onTouchEvent(event);
}

上述方法会接收一个 MotionEvent 对象,该对象包含了当前的触摸事件的详细信息,包括触摸的位置等。

解析触摸事件

要获取触摸坐标,我们需要解析 MotionEvent 对象。MotionEvent 包含了多个数据项,其中包括触摸位置的坐标信息。

@Override
public boolean onTouchEvent(MotionEvent event) {
    // 获取触摸位置的坐标信息
    int x = (int) event.getX();
    int y = (int) event.getY();

    // 处理触摸事件
    return super.onTouchEvent(event);
}

上述代码中,我们通过调用 getX() 和 getY() 方法来获取触摸位置的横纵坐标信息。

示例代码

下面是一个完整的示例代码,用于演示如何获取屏幕的触摸坐标。

public class TouchActivity extends AppCompatActivity {

    private TextView mTvTouch;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_touch);

        mTvTouch = findViewById(R.id.tv_touch);

        // 监听触摸事件
        findViewById(R.id.fl_touch).setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // 获取触摸位置的坐标信息
                int x = (int) event.getX();
                int y = (int) event.getY();

                // 显示触摸坐标信息
                mTvTouch.setText("Touch point: (" + x + ", " + y + ")");

                // 返回 true 表示拦截事件
                return true;
            }
        });
    }
}

上述代码中,我们在布局文件中使用一个 FrameLayout 来布置触摸区域,并通过 setOnTouchListener() 方法来监听该区域的触摸事件。在触摸事件的处理代码中,我们通过调用 getX() 和 getY() 方法来获取触摸位置的坐标信息,并将其显示在 Textview 控件中。

总结

Android 提供了多种方法来获取屏幕的触摸坐标,本文介绍了一种常见的方法。在具体的应用中,我们可以根据实际需求来选择合适的方法。