diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
index 6512913..89c2dea 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
@@ -6,9 +6,12 @@
import android.content.Intent;
import android.graphics.Bitmap;
+import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
+import android.widget.CompoundButton;
import android.widget.TextView;
+import android.widget.ToggleButton;
import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.viewmodels.DrawingStateViewModel;
@@ -37,9 +40,35 @@
drawingStateViewModel= new ViewModelProvider(this).get(DrawingStateViewModel.class);
- findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン
findViewById(R.id.clearButton).setOnClickListener(this);//画面クリアボタン
findViewById(R.id.eraserButton).setOnClickListener(this);//消しゴムボタン
+ findViewById(R.id.blackPenButton).setOnClickListener(this);//消しゴムボタン
+
+ ToggleButton okToggleButton = (ToggleButton) findViewById(R.id.toggleButton);
+ okToggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if (isChecked) {
+ okToggleButton.setTextOn("完了");
+ drawingCanvas.setEnabled(true);
+ drawingCanvas.setClickable(true);
+ drawingCanvas.setColor(Color.BLACK);
+
+ } else {
+ okToggleButton.setTextOff("描き直す");
+ drawingCanvas.setEnabled(false);
+ drawingCanvas.setClickable(false);
+ drawingCanvas.setColor(Color.TRANSPARENT);
+
+ //putDrawing
+ drawingCanvas.setDrawingCacheEnabled(true);//キャッシュを取得する設定にする
+ drawingCanvas.buildDrawingCache();
+ Bitmap bitmap = Bitmap.createBitmap(drawingCanvas.getDrawingCache());
+ drawingCanvas.destroyDrawingCache();//既存のキャッシュをクリアする
+ drawingStateViewModel.putDrawing(bitmap);
+ }
+ }
+ });
+
TextView textKeyword =(TextView)findViewById(R.id.textKeyword);//keywordのTextView
TextView textMemberNum = (TextView)findViewById(R.id.drawingNowText);//残りのイラスト枚数のTextView
@@ -66,6 +95,9 @@
textKeyword.setText("Dno: " + dno + ", Keyword: " + keyword);
drawingNow++;
textMemberNum.setText(""+drawingNow+"/"+drawingNum);
+ drawingCanvas.clearCanvas();
+
+ okToggleButton.setChecked(true);
}
});
@@ -90,17 +122,12 @@
@Override
public void onClick(View v){
- if(v.getId() == R.id.okButtton) {//okButtonが押されたときの処理
-// Bitmap bitmap = null;
- drawingCanvas.setDrawingCacheEnabled(true);//キャッシュを取得する設定にする
- drawingCanvas.buildDrawingCache();
- Bitmap bitmap = Bitmap.createBitmap(drawingCanvas.getDrawingCache());
- drawingCanvas.destroyDrawingCache();//既存のキャッシュをクリアする
- drawingStateViewModel.putDrawing(bitmap);
- }else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理
+ if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理
drawingCanvas.clearCanvas();
}else if(v.getId() == R.id.eraserButton){//eraserButtonが押されたときの処理
- drawingCanvas.eraserPaint();
+ drawingCanvas.setColor(Color.WHITE);
+ }else if(v.getId() == R.id.blackPenButton){
+ drawingCanvas.setColor(Color.BLACK);
}
}
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
index 1c79e96..e8e70d7 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
@@ -1,6 +1,7 @@
package org.ntlab.irisclient;
import android.content.Context;
+import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
@@ -15,15 +16,22 @@
public class DrawingCanvas extends View {
+ private Canvas canvas;
+ private Bitmap bitmap;
+
private Path path;
private Paint paint;
+ private int curw;
+ private int curh;
+ private int curoldw;
+ private int curoldh;
+
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);//線をひく
@@ -34,8 +42,22 @@
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ canvas.drawBitmap(bitmap, 0, 0, null);
canvas.drawPath(path,paint);
}
+ @Override
+ protected void onSizeChanged(
+ int w, int h,
+ int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+ curw = w;
+ curh = h;
+ curoldw = oldw;
+ curoldh = oldh;
+ bitmap = Bitmap.createBitmap(
+ w, h, Bitmap.Config.ARGB_8888);
+ canvas = new Canvas(bitmap);
+ }
//3)実際の操縦 (条件分岐:押したとき、動かしたとき、放した時)
@Override
@@ -47,6 +69,7 @@
//(3-2)タッチの処理
switch (event.getAction()){
case MotionEvent.ACTION_DOWN://タッチした瞬間
+ path.reset();
path.moveTo(x,y);
invalidate();
break;
@@ -55,6 +78,10 @@
invalidate();
break;
case MotionEvent.ACTION_UP://手を離す
+ path.lineTo(x, y);
+ canvas.drawPath(path, paint);
+ path.reset();
+ invalidate();
break;
}
@@ -65,16 +92,13 @@
//4)クリア処理
public void clearCanvas(){
+ onSizeChanged(curw, curh, curoldw, curoldh);
path.reset();
invalidate();
}
- //消しゴム
- public void eraserPaint(){
- //paint = new Paint();
-// Paint paint = new Paint();
-// paint.setColor(Color.TRANSPARENT);
-// paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
+ //筆の色を変更
+ public void setColor(int color){
+ paint.setColor(color);
}
-
}
diff --git a/app/src/main/res/layout/activity_drawing.xml b/app/src/main/res/layout/activity_drawing.xml
index 265f6ac..d9515e6 100644
--- a/app/src/main/res/layout/activity_drawing.xml
+++ b/app/src/main/res/layout/activity_drawing.xml
@@ -19,51 +19,39 @@
app:layout_constraintVertical_bias="0.836" />
-
-
+ app:layout_constraintVertical_bias="0.74" />
+ app:layout_constraintHorizontal_bias="0.039"
+ app:layout_constraintStart_toEndOf="@+id/blackPenButton"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.303" />
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
\ No newline at end of file