Newer
Older
IrisClient / app / src / main / java / org / ntlab / irisclient / DrawingCanvas.java
package org.ntlab.irisclient;

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;

import androidx.annotation.Nullable;

public class DrawingCanvas extends View {

    private Path path;
    private Paint paint;

    public DrawingCanvas(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        //1)コンストラクタ(≒必需品)
        path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック

        paint = new Paint();//筆の種類
        paint.setColor(Color.BLACK);//色の指定
        paint.setStyle(Paint.Style.STROKE);//線をひく
        paint.setStrokeWidth(15);//幅
    }

    //2)onDraw(描画の準備/プロペラが回りだした状態)
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawPath(path,paint);
    }

    //3)実際の操縦 (条件分岐:押したとき、動かしたとき、放した時)
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //(3-1)座標を取得(x座標、y座標)
        float x = event.getX();
        float y = event.getY();

        //(3-2)タッチの処理
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN://タッチした瞬間
                path.moveTo(x,y);
                invalidate();
                break;
            case MotionEvent.ACTION_MOVE://動かしている間
                path.lineTo(x,y);
                invalidate();
                break;
            case MotionEvent.ACTION_UP://手を離す
                break;
        }

        //return super.onTouchEvent(event);
        return true;
    }


    //4)クリア処理
    public void clearCanvas(){
        path.reset();
        invalidate();
    }

}