📜  Android 中带有 TouchEvents 的简单移动对象(1)

📅  最后修改于: 2023-12-03 14:39:09.459000             🧑  作者: Mango

Android 中带有 TouchEvents 的简单移动对象

在 Android 开发中,处理用户的触摸事件是一个常见的任务。本文将介绍如何创建一个简单的移动对象,并使用 TouchEvents 在屏幕上移动它。

创建一个新的 Android 项目

首先,你需要在 Android Studio 中创建一个新的项目。在创建项目的过程中,配置适当的包名、应用名等相关信息。

创建一个自定义的 View

接下来,我们将创建一个自定义的 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);
    }
}
在布局文件中添加自定义 View

接下来,你需要在布局文件中添加自定义的 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);
    }
}
在布局文件中添加自定义 View

打开 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>
运行应用程序