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.RED);//色の指定 paint.setStyle(Paint.Style.STROKE);//線をひく paint.setStrokeWidth(20);//幅 } //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(); } }