📅  最后修改于: 2023-12-03 14:39:09.459000             🧑  作者: Mango
在 Android 开发中,处理用户的触摸事件是一个常见的任务。本文将介绍如何创建一个简单的移动对象,并使用 TouchEvents 在屏幕上移动它。
首先,你需要在 Android Studio 中创建一个新的项目。在创建项目的过程中,配置适当的包名、应用名等相关信息。
接下来,我们将创建一个自定义的 View,并在其中实现移动对象的绘制和触摸事件的处理逻辑。
新建一个名为 MoveObjectView
的 Java 文件,代码如下:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class MoveObjectView extends View {
private float objectX;
private float objectY;
private Paint objectPaint;
public MoveObjectView(Context context) {
super(context);
init();
}
public MoveObjectView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
objectX = 0;
objectY = 0;
objectPaint = new Paint();
objectPaint.setColor(getResources().getColor(R.color.object_color));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(objectX, objectY, 50, objectPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
objectX = event.getX();
objectY = event.getY();
invalidate();
return true;
case MotionEvent.ACTION_MOVE:
objectX = event.getX();
objectY = event.getY();
invalidate();
return true;
case MotionEvent.ACTION_UP:
return true;
}
return super.onTouchEvent(event);
}
}
接下来,你需要在布局文件中添加自定义的 MoveObjectView
。
打开 activity_main.xml
文件,将以下代码添加到文件中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<com.example.myapp.MoveObjectView
android:layout_width="300dp"
android:layout_height="300dp" />
</LinearLayout>
现在,你可以运行应用程序,你将看到一个空白的屏幕,并且在屏幕上有一个可以自由移动的圆形对象。
当你点击或滑动屏幕时,圆形对象会跟随你的手指移动。
Markdown 格式的代码如下:
## Android 中带有 TouchEvents 的简单移动对象
### 创建一个新的 Android 项目
### 创建一个自定义的 View
新建一个名为 `MoveObjectView` 的 Java 文件,代码如下:
```java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class MoveObjectView extends View {
private float objectX;
private float objectY;
private Paint objectPaint;
public MoveObjectView(Context context) {
super(context);
init();
}
public MoveObjectView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
objectX = 0;
objectY = 0;
objectPaint = new Paint();
objectPaint.setColor(getResources().getColor(R.color.object_color));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(objectX, objectY, 50, objectPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
objectX = event.getX();
objectY = event.getY();
invalidate();
return true;
case MotionEvent.ACTION_MOVE:
objectX = event.getX();
objectY = event.getY();
invalidate();
return true;
case MotionEvent.ACTION_UP:
return true;
}
return super.onTouchEvent(event);
}
}
打开 activity_main.xml
文件,将以下代码添加到文件中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<com.example.myapp.MoveObjectView
android:layout_width="300dp"
android:layout_height="300dp" />
</LinearLayout>