diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java index b54769a..0343d21 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintActivity.java @@ -60,4 +60,9 @@ paintCanvas.setPaintViewModel(paintViewModel); } //----------------------------------------------------------------- + @Override + public void onDestroy(){ + super.onDestroy(); + paintViewModel.stop(); + } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java index 54a3d4a..56ad218 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintCanvas.java @@ -10,6 +10,8 @@ import android.view.View; import org.ntlab.acanthus_client.Acanthus; +import org.ntlab.acanthus_client.entities.Position; +import org.ntlab.acanthus_client.entities.Stroke; import org.ntlab.acanthus_client.resources.HelloWorldRest; import org.ntlab.acanthus_client.resources.gallery.StrokesRest; @@ -32,7 +34,9 @@ public class PaintCanvas extends View { private Path path; + private Path path2; private Paint paint; + private Paint paint2; private PaintViewModel paintViewModel; //----------------------------------------------------------------- @@ -41,11 +45,15 @@ super(context, attrs); path = new Path(); // 図形描画 + path2 = new Path(); // 図形描画 paint = new Paint();//筆の種類 - - paint.setColor(Color.RED);//色の指定 + paint2 = new Paint();//筆の種類 + paint.setColor(Color.BLACK);//色の指定 paint.setStyle(Paint.Style.STROKE);//線をひく paint.setStrokeWidth(20);//幅 + paint2.setColor(Color.RED);//色の指定 + paint2.setStyle(Paint.Style.STROKE);//線をひく + paint2.setStrokeWidth(20);//幅 } //----------------------------------------------------------------- @@ -61,6 +69,8 @@ protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path, paint); + canvas.drawPath(path2, paint2); + getcanvas(); } //----------------------------------------------------------------- @@ -112,6 +122,32 @@ } //----------------------------------------------------------------- + //----------------------------------------------------------------- + // 押した瞬間の処理 + private void onTouched2(float x, float y) { + path2.moveTo(x, y); + invalidate(); + } - + //----------------------------------------------------------------- + // 押した後動かした時の処理 + private void onTouchedMove2(float x, float y) { + path2.lineTo(x, y); + invalidate(); + } + //描写するための取得 + public void getcanvas(){ + int cnt=0; + for (Stroke s : paintViewModel.getStroke().getValue()) { + for (Position p : s.getPositions()) { + if (cnt == 0) { + onTouched2(p.getX(), p.getY()); + } else { + onTouchedMove2(p.getX(), p.getY()); + } + cnt++; + } + cnt = 0; + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java index 4575893..c4bd203 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintConnectionModel.java @@ -6,6 +6,7 @@ import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.entities.Animation; import org.ntlab.acanthus_client.entities.Position; +import org.ntlab.acanthus_client.entities.Stroke; import org.ntlab.acanthus_client.resources.gallery.GalleryRest; import org.ntlab.acanthus_client.resources.gallery.StrokesRest; @@ -107,12 +108,12 @@ } //----------------------------------------------------------------- //Getを追加 - public void apigetPosition(MutableLiveData> paintPosition){ + public void apigetPosition(MutableLiveData> paintPosition,int num){ final StrokesRest strokesRest = retrofit.create(StrokesRest.class); //----------------------------------------------------------------- // 筆跡追加API - Call> call = strokesRest.getPositions(acanthus.getAid(),0); + Call> call = strokesRest.getPositions(acanthus.getAid(),num); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -127,8 +128,28 @@ } - public Collection getPosition(){ - return this.getPaint; + //----------------------------------------------------------------- + //Getを追加 + public void getStrokesize(MutableLiveData> strokes){ + final StrokesRest strokesRest = retrofit.create(StrokesRest.class); + + //----------------------------------------------------------------- + // 筆跡追加API + Call> call = strokesRest.getStrokes(acanthus.getAid()); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) strokes.setValue(response.body()); + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } + + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java index 93af18b..e6d1f34 100644 --- a/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java +++ b/app/src/main/java/org/ntlab/acanthus_client/views/paint/PaintViewModel.java @@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull; import org.ntlab.acanthus_client.Acanthus; import org.ntlab.acanthus_client.entities.Position; +import org.ntlab.acanthus_client.entities.Stroke; import java.util.ArrayList; import java.util.Collection; @@ -22,6 +23,8 @@ private PaintModelContainer paintModelContainer; private MutableLiveData> paintPosition; + private MutableLiveData> strokes; + private ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); //----------------------------------------------------------------- //----------------------------------------------------------------- @@ -31,7 +34,9 @@ paintModelContainer.getPaintConnectionModel().init(acanthus); paintModelContainer.getInvitesConnectionModel().init(acanthus); paintPosition = new MutableLiveData<>(); - ScheduledThreadPoolExecutor thread = new ScheduledThreadPoolExecutor(1); + strokes = new MutableLiveData<>(); + strokes.setValue(new ArrayList<>()); + strokes.getValue().add(new Stroke()); thread.scheduleWithFixedDelay(this, 1000L, 100L, TimeUnit.MICROSECONDS); } @@ -63,8 +68,17 @@ @Override public void run() { Log.d("debug", "run: "); - paintModelContainer.getPaintConnectionModel().apigetPosition(paintPosition); + paintModelContainer.getPaintConnectionModel().getStrokesize(strokes); + //paintModelContainer.getPaintConnectionModel().apigetPosition(paintPosition,i); } //----------------------------------------------------------------- + + public MutableLiveData> getStroke(){ + return strokes; + } + + public void stop(){ + thread.shutdown(); + } } \ No newline at end of file