diff --git a/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java b/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java index b83dbe86551ee5a1382e267c32b972b224046e82..cafdad0290c2d8a36fc7f34cd812577e34123c2d 100644 --- a/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java +++ b/app/src/main/java/com/example/myhabitat/CreationOuvertureActivity.java @@ -1,15 +1,12 @@ package com.example.myhabitat; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.Drawable; +import android.graphics.*; import android.util.Log; +import android.view.MotionEvent; +import android.view.SurfaceView; import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.Spinner; +import android.widget.*; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import habitat.Habitat; @@ -19,17 +16,20 @@ import habitat.Piece; import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.lang.reflect.Array; public class CreationOuvertureActivity extends AppCompatActivity{ private Habitat habitat; private ImageView imageViewDepart; - private ImageView imageViewArrivee; private Piece pieceDepart; private Piece pieceArrivee; + private Piece pieceEnCours; private Orientation orientationPieceDepart; private Orientation orientationPieceArrivee; + private Paint myPaint; + private Canvas canvasDepart; + private Rect rectDepart; + private Rect rectArrivee; @Override protected void onCreate(Bundle savedInstanceState) { @@ -47,7 +47,13 @@ public class CreationOuvertureActivity extends AppCompatActivity{ } imageViewDepart = findViewById(R.id.imageViewDepart); - imageViewArrivee = findViewById(R.id.imageViewArrivee); + + myPaint = new Paint(); + myPaint.setStrokeWidth(5); + myPaint.setColor(Color.BLUE); + myPaint.setStyle(Paint.Style.STROKE); + + setSurfaceForSelect(); Spinner spinnerD = findViewById(R.id.spinnerDepart); Spinner spinnerDOrientation = findViewById(R.id.spinnerDOrientation); @@ -75,7 +81,6 @@ public class CreationOuvertureActivity extends AppCompatActivity{ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { pieceDepart = habitat.getPieces().get(position); - affichePieceDepart(); } @Override @@ -104,7 +109,6 @@ public class CreationOuvertureActivity extends AppCompatActivity{ orientationPieceDepart = Orientation.SUD; break; } - affichePieceDepart(); } @Override @@ -118,7 +122,6 @@ public class CreationOuvertureActivity extends AppCompatActivity{ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { pieceArrivee = habitat.getPieces().get(position); - affichePieceArrivee(); } @Override @@ -147,7 +150,6 @@ public class CreationOuvertureActivity extends AppCompatActivity{ orientationPieceArrivee = Orientation.SUD; break; } - affichePieceArrivee(); } @Override @@ -157,6 +159,58 @@ public class CreationOuvertureActivity extends AppCompatActivity{ }); } + private void setSurfaceForSelect() { + SurfaceView surfaceViewDepart = findViewById(R.id.surfaceViewDepart); + surfaceViewDepart.setZOrderOnTop(true); + surfaceViewDepart.getHolder().setFormat(PixelFormat.TRANSPARENT); + canvasDepart = surfaceViewDepart.getHolder().lockCanvas(); + + imageViewDepart.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getPointerCount() == 2) { + float x1, x2, y1, y2; + x1 = event.getX(0); + y1 = event.getY(0); + x2 = event.getX(1); + y2 = event.getY(1); + Log.i("SelectActivity", "################################################# Coords : " + x1 + " | " + y1 + " & " + x2 + " | " + y2); + + rectDepart = new Rect((int) x1, (int) y1, (int) x2, (int) y2); + rectDepart.sort(); + + try { + canvasDepart = surfaceViewDepart.getHolder().lockCanvas(); + synchronized (surfaceViewDepart.getHolder()) { + canvasDepart.drawColor(0, PorterDuff.Mode.CLEAR); + canvasDepart.drawRect(rectDepart, myPaint); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (canvasDepart != null) { + surfaceViewDepart.getHolder().unlockCanvasAndPost(canvasDepart); + } + } + + + //Log.i("SelectActivity", "################################################# Coords Rect : " + rect.left + " | " + rect.top + " & " + rect.right + " | " + rect.bottom); + + } + if (event.getAction() == MotionEvent.ACTION_UP) { + if (rectDepart != null) { + Log.i("Touchup", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ je releve mon doigt"); + + //showImage(); + + } + } + + return true; + } + }); + } + public void affichePieceDepart(){ if(pieceDepart != null && orientationPieceDepart != null){ @@ -174,6 +228,12 @@ public class CreationOuvertureActivity extends AppCompatActivity{ }else{ imageViewDepart.setImageDrawable(getDrawable(R.drawable.imagemur)); } + imageViewDepart.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); } } @@ -190,11 +250,20 @@ public class CreationOuvertureActivity extends AppCompatActivity{ if (fis != null) { Bitmap bm = BitmapFactory.decodeStream(fis); - imageViewArrivee.setImageBitmap(bm); + imageViewDepart.setImageBitmap(bm); }else{ - imageViewArrivee.setImageDrawable(getDrawable(R.drawable.imagemur)); + imageViewDepart.setImageDrawable(getDrawable(R.drawable.imagemur)); } } } + public void setSDepart(View view) { + pieceEnCours = pieceDepart; + affichePieceDepart(); + } + + public void setSArrivee(View view) { + pieceEnCours = pieceArrivee; + affichePieceArrivee(); + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_creation_ouverture.xml b/app/src/main/res/layout/activity_creation_ouverture.xml index 85397c2d040bb0b8cabe9d840cf6489215406ce3..e0ef718903a16004ea041900c88f7f91357aa353 100644 --- a/app/src/main/res/layout/activity_creation_ouverture.xml +++ b/app/src/main/res/layout/activity_creation_ouverture.xml @@ -1,35 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> + <androidx.constraintlayout.widget.ConstraintLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".CreationOuvertureActivity"> + android:layout_width="match_parent" + android:layout_height="match_parent" + xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" + tools:context=".CreationOuvertureActivity" + xmlns:android="http://schemas.android.com/apk/res/android"> - <ImageView - android:layout_width="186dp" - android:layout_height="187dp" - app:srcCompat="@drawable/imagemur" - android:id="@+id/imageViewArrivee" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintHorizontal_bias="0.502" - android:layout_marginBottom="32dp"/> <ImageView - android:layout_width="186dp" - android:layout_height="187dp" + android:layout_width="414dp" + android:layout_height="355dp" app:srcCompat="@drawable/imagemur" android:id="@+id/imageViewDepart" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/spinnerAOrientation" - android:layout_marginTop="60dp" - app:layout_constraintHorizontal_bias="0.502" - app:layout_constraintBottom_toTopOf="@+id/imageViewArrivee" - app:layout_constraintVertical_bias="0.0"/> + app:layout_constraintTop_toBottomOf="@+id/buttonSArrivee" + /> <Spinner android:layout_width="130dp" @@ -112,9 +100,42 @@ android:layout_height="33dp" android:id="@+id/spinnerDOrientation" app:layout_constraintTop_toBottomOf="@+id/textView3" - android:layout_marginTop="16dp" + android:layout_marginTop="20dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.097"/> + <SurfaceView + android:layout_width="414dp" + android:layout_height="355dp" + android:id="@+id/surfaceViewDepart" + app:layout_constraintEnd_toEndOf="@+id/imageViewDepart" + app:layout_constraintStart_toStartOf="@+id/imageViewDepart" + app:layout_constraintTop_toTopOf="@+id/imageViewDepart" + android:layout_marginTop="0dp" + app:layout_constraintHorizontal_bias="0.0"/> + + <Button + android:text="Selectionner" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/buttonSDepart" + android:onClick="setSDepart" + app:layout_constraintTop_toBottomOf="@+id/spinnerDOrientation" + app:layout_constraintEnd_toStartOf="@+id/buttonSArrivee" + app:layout_constraintStart_toStartOf="parent" + android:layout_marginTop="16dp" + app:layout_constraintHorizontal_bias="0.419"/> + + <Button + android:text="Selectionner" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/buttonSArrivee" + android:onClick="setSArrivee" + app:layout_constraintTop_toBottomOf="@+id/spinnerAOrientation" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginEnd="40dp" + android:layout_marginTop="16dp"/> + </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file