如何在Android中的触摸坐标处将图像插入屏幕?
在本文中,我们将学习在屏幕上的触摸坐标上放置图像。我们可以在屏幕上插入多个图像。 onTouchListener将用于获取屏幕上触摸位置的坐标,以便在该位置插入图像。下面给出了一个示例 GIF,以了解我们将在本文中做什么。请注意,我们将使用Kotlin语言来实现这个项目。
分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Kotlin作为编程语言。
第二步:在布局中设置RelativeLayout
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。
XML
Kotlin
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.MotionEvent
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.RelativeLayout
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var areaLayout: RelativeLayout
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
areaLayout = findViewById(R.id.layout)
areaLayout.setOnTouchListener { view, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
val x = event.x.toInt() // get x-Coordinate
val y = event.y.toInt() // get y-Coordinate
val lp = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT) // Assuming you use a RelativeLayout
val iv = ImageView(applicationContext)
lp.setMargins(x, y, 0, 0) // set margins
iv.layoutParams = lp
iv.setImageDrawable(resources.getDrawable(R.drawable.flower)) // set the image from drawable
(view as ViewGroup).addView(iv) // add a View programmatically to the ViewGroup
}
true
}
}
}
步骤 3:使用 MainActivity.kt 文件
转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。
科特林
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.MotionEvent
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.RelativeLayout
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var areaLayout: RelativeLayout
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
areaLayout = findViewById(R.id.layout)
areaLayout.setOnTouchListener { view, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
val x = event.x.toInt() // get x-Coordinate
val y = event.y.toInt() // get y-Coordinate
val lp = RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT) // Assuming you use a RelativeLayout
val iv = ImageView(applicationContext)
lp.setMargins(x, y, 0, 0) // set margins
iv.layoutParams = lp
iv.setImageDrawable(resources.getDrawable(R.drawable.flower)) // set the image from drawable
(view as ViewGroup).addView(iv) // add a View programmatically to the ViewGroup
}
true
}
}
}
现在,运行应用程序
输出:
源代码:点击这里
想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!