android实现简单的画画板实例代码


在Android中实现一个简单的画画板功能,你可以通过自定义一个`View`来实现。下面是一个基本的示例,展示了如何使用`Canvas`和`Path`来绘制线条。这个示例不包括完整的Android项目结构,但你可以将以下代码放入你的Activity中的一个自定义`View`类中。


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class DrawingView extends View {

    private Paint drawPaint;
    private Path drawPath;
    private float lastX, lastY;
    private boolean isPathStarted = false;

    public DrawingView(Context context, AttributeSet attrs) {
        super(context, attrs);

        // 初始化画笔
        drawPaint = new Paint();
        drawPaint.setColor(Color.BLACK); // 设置画笔颜色为黑色
        drawPaint.setAntiAlias(true);
        drawPaint.setStrokeWidth(5); // 设置画笔粗细
        drawPaint.setStyle(Paint.Style.STROKE); // 设置为描边模式
        drawPaint.setStrokeJoin(Paint.Join.ROUND); // 设置线条接头为圆形
        drawPaint.setStrokeCap(Paint.Cap.ROUND); // 设置线条末端为圆形

        drawPath = new Path();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // 绘制路径
        canvas.drawPath(drawPath, drawPaint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                drawPath.moveTo(x, y);
                lastX = x;
                lastY = y;
                isPathStarted = true;
                break;
            case MotionEvent.ACTION_MOVE:
                if (isPathStarted) {
                    drawPath.quadTo(lastX, lastY, (x + lastX) / 2, (y + lastY) / 2);
                    lastX = x;
                    lastY = y;
                }
                break;
            case MotionEvent.ACTION_UP:
                // 这里可以添加代码来处理画笔抬起时的逻辑,比如添加新的路径或完成绘制
                isPathStarted = false;
                break;
            default:
                return false;
        }

        invalidate(); // 重绘视图
        return true;
    }
}

你可以在你的Activity布局文件中使用这个`DrawingView`,如下所示:


<com.yourpackage.DrawingView
    android:id="@+id/drawingView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

确保将`com.yourpackage.DrawingView`替换为你的实际包名加类名。这样,你就有一个简单的画画板功能了。你可以继续扩展这个示例,比如添加颜色选择、线条粗细调整等功能。