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

📅  最后修改于: 2022-05-13 01:55:45.978000             🧑  作者: Mango

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

在 Android 中,应用屏幕是一种布局,可用于显示各种 UI 元素,如 TextView、Button、ImageView 等。这些 UI 元素根据一组预定义的规则和开发人员更改进行定位。简而言之,任何应用程序屏幕上的每一位都定义了一个坐标,该坐标可用于跟踪 UI 元素以及用户在屏幕上的触摸。这是关键,其中应用程序是游戏软件,需要用户触摸屏幕才能执行操作。因此,在本文中,我们将向您展示如何在 Android 中获取屏幕触摸的 X 和 Y 坐标。 IDE 准备就绪后,请按照以下步骤操作。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在Kotlin中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。

第 2 步:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是activity_main.xml文件的代码。添加两个 TextView 来显示 X 和 Y 坐标,每个坐标中一个。

XML


  
    
  
    
  


Kotlin
package org.geeksforgeeks.touchcoordinates
  
import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RelativeLayout
import android.widget.TextView
  
class MainActivity : AppCompatActivity() {
    @SuppressLint("ClickableViewAccessibility", "SetTextI18n")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing the 
        // UI elements from the layout file
        val mRelativeLayout = findViewById(R.id.relative_layout_1)
        val mTextViewX = findViewById(R.id.text_view_1)
        val mTextViewY = findViewById(R.id.text_view_2)
  
        // When relative layout is touched
        mRelativeLayout.setOnTouchListener { _, motionEvent ->
            
            // X and Y values are fetched
            val mX = motionEvent.x
            val mY = motionEvent.y
  
            // X and Y values are 
            // displayed in the TextView
            mTextViewX.text = "X: $mX"
            mTextViewY.text = "Y: $mY"
  
            true
        }
    }
}


第 3 步:使用 MainActivity.kt 文件

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。

科特林

package org.geeksforgeeks.touchcoordinates
  
import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RelativeLayout
import android.widget.TextView
  
class MainActivity : AppCompatActivity() {
    @SuppressLint("ClickableViewAccessibility", "SetTextI18n")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring and initializing the 
        // UI elements from the layout file
        val mRelativeLayout = findViewById(R.id.relative_layout_1)
        val mTextViewX = findViewById(R.id.text_view_1)
        val mTextViewY = findViewById(R.id.text_view_2)
  
        // When relative layout is touched
        mRelativeLayout.setOnTouchListener { _, motionEvent ->
            
            // X and Y values are fetched
            val mX = motionEvent.x
            val mY = motionEvent.y
  
            // X and Y values are 
            // displayed in the TextView
            mTextViewX.text = "X: $mX"
            mTextViewY.text = "Y: $mY"
  
            true
        }
    }
}

输出:

您可以看到 X 和 Y 坐标显示在各自的 TextView 中。