diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java index b3ad02c..81a4051 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java @@ -5,17 +5,33 @@ import androidx.lifecycle.ViewModelProvider; import android.os.Bundle; +import android.view.View; import org.ntlab.irisclient.viewmodels.DrawingStateViewModel; -public class DrawingActivity extends AppCompatActivity { +public class DrawingActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawing); + DrawingStateViewModel drawingStateViewModel = new ViewModelProvider(this).get(DrawingStateViewModel.class); + //Irisから必要な情報を取得 + Iris iris = (Iris) this.getApplication(); + String rid = iris.getRid(); + String nickName = iris.getNickname(); + + //viewModelに必用な情報をセット + drawingStateViewModel.setRid(rid); + drawingStateViewModel.setNickName(nickName); + + //タイマースタート呼び出し + //drawingStateViewModel.start(100ms); + + findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン + drawingStateViewModel.getDno().observe(this, new Observer() { private Integer dno; @Override @@ -31,6 +47,15 @@ this.state = state; } }); - } + + @Override + public void onClick(View v){ + DrawingStateViewModel drawingStateViewModel = new ViewModelProvider(this).get(DrawingStateViewModel.class); + if(v.getId() == R.id.okButtton) { + //okButtonが押された処理 + drawingStateViewModel.putDrawing(); + } + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java new file mode 100644 index 0000000..9c11905 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java @@ -0,0 +1,70 @@ +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(); + } + +} diff --git a/app/src/main/res/layout/activity_drawing.xml b/app/src/main/res/layout/activity_drawing.xml index 5935a37..f7b2214 100644 --- a/app/src/main/res/layout/activity_drawing.xml +++ b/app/src/main/res/layout/activity_drawing.xml @@ -6,38 +6,42 @@ android:layout_height="match_parent" tools:context=".DrawingActivity"> -