我无法通过onTouch方法在我的画布上画画。为什么不工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我无法通过onTouch方法在我的画布上画画。为什么不工作?相关的知识,希望对你有一定的参考价值。

这是我的第一个问题!我希望你能帮助我!

我解释说:

我正在尝试在android工作室中开发一个像paint一样的应用程序来处理Paint,Canvas和这个类...

我有一个课程叫Lienzo.java;这是我班级的代码:

package com.example.pedro.paint;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

import android.graphics.Path;

/**
 * Created by Pedro on 26/02/2018.
 */

public class Lienzo extends View {

    //PATH TO DRAW THE LINES
    private Path drawPath;

    //PAINT DRAWING AND PAINT CANVAS
    private Paint drawPaint,canvasPaint;

    //COLOR INITIAL
    private int paintColor=0xFFFF0000;

    //CANVAS
    private Canvas drawCanvas;

    //CANVAS TO SAVE
    private Bitmap canvasBitmap;


    public Lienzo(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        setupDrawing();
    }
    private void setupDrawing(){
        //CONFIGURATION AREA TO DRAW

        drawPath = new Path();
        drawPaint=new Paint();
        drawPaint.setColor(paintColor);
        drawPaint.setAntiAlias(true);
        drawPaint.setStrokeWidth(20);
        drawPaint.setStyle(Paint.Style.STROKE);
        drawPaint.setStrokeJoin(Paint.Join.ROUND);
        drawPaint.setStrokeCap(Paint.Cap.ROUND);
        canvasPaint= new Paint(Paint.DITHER_FLAG);

    }

    //ASIGN SIZE TO VIEW
    @Override
    protected void onSizeChanged(int w, int h,int oldw, int oldh){
        super.onSizeChanged(w,h,oldw,oldh);
        canvasBitmap=Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
        drawCanvas=new Canvas(canvasBitmap);
    }
    //PAINT THE VIEW.CALL BY ONTHOUCHEVENT
    @Override
    protected void onDraw(Canvas canvas){
        canvas.drawBitmap(canvasBitmap,0,0,canvasPaint);
        canvas.drawPath(drawPath,drawPaint);
    }


    //REGISTER USER TOUCH
    public boolean OnTouchEvent(MotionEvent event)
    {
        float touchX =event.getX();
        float touchY=event.getY();

        switch (event.getAction())
        {
            case MotionEvent.ACTION_DOWN:
                drawPath.moveTo(touchX,touchY);
                break;
            case MotionEvent.ACTION_MOVE:
                drawPath.lineTo(touchX,touchY);
                break;
            case MotionEvent.ACTION_UP:
                drawPath.lineTo(touchX,touchY);
                drawCanvas.drawPath(drawPath,drawPaint);
                drawPath.reset();
                break;
            default:
                return false;
        }
        //REPAINT
        invalidate();
        return true;
    }
}

我没有错误,但我试着画画但什么都不做。这是一个例子的副本。原始的https://www.youtube.com/watch?v=GAr_agEokr8工作,但我的代码,它相同,不工作。谁知道为什么?

感谢致敬!

答案

OnTouchEvent改为onTouchEvent并添加@Override

以上是关于我无法通过onTouch方法在我的画布上画画。为什么不工作?的主要内容,如果未能解决你的问题,请参考以下文章

无法在多个画布上绘制

无法使用 invalidate() 重绘我的画布位图;

画画板小案例

物体似乎出现在我的画布后面

为啥我的 innerHTML 方法无法在我的联系表单中列出内容?

在画布上看不到圆圈