diff --git a/app/src/main/java/com/codigoparallevar/minicards/DrawView.java b/app/src/main/java/com/codigoparallevar/minicards/DrawView.java index 5c403cd..8052aa8 100644 --- a/app/src/main/java/com/codigoparallevar/minicards/DrawView.java +++ b/app/src/main/java/com/codigoparallevar/minicards/DrawView.java @@ -5,19 +5,19 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; +import android.view.MotionEvent; import android.view.View; import com.codigoparallevar.minicards.parts.Part; import com.codigoparallevar.minicards.parts.Placeholder; import com.codigoparallevar.minicards.parts.buttons.RoundButton; -import java.util.LinkedList; -import java.util.List; +import java.util.ArrayList; class DrawView extends View { Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); - List parts = new LinkedList<>(); + ArrayList parts = new ArrayList<>(); public DrawView(Context context) { super(context); @@ -34,4 +34,32 @@ class DrawView extends View { Log.d("Render time", System.currentTimeMillis() - time + "ms"); } + + @Override + public boolean onTouchEvent(MotionEvent event){ + int x = (int) event.getX() - this.getLeft(); + int y = (int) event.getY() - this.getTop(); + + Part touchedPart = getPartOn(x, y); + if (touchedPart == null){ + Log.d("Touched part", "not found"); + return false; + } + + Log.d("Touched part", "Part: " + touchedPart); + invalidate(); + return true; + } + + private Part getPartOn(int x, int y) { + // Look in the list, in reverse so top-most elements are checked before + for (int i = parts.size() - 1; i >= 0; i--){ + Part part = parts.get(i); + if ((x >= part.getLeft()) && (part.getRight() >= x) + && (y >= part.getTop()) && (part.getBottom() >= y)){ + return part; + } + } + return null; + } } diff --git a/app/src/main/java/com/codigoparallevar/minicards/TestActivity.java b/app/src/main/java/com/codigoparallevar/minicards/TestActivity.java index 89b3542..49f55fc 100644 --- a/app/src/main/java/com/codigoparallevar/minicards/TestActivity.java +++ b/app/src/main/java/com/codigoparallevar/minicards/TestActivity.java @@ -3,15 +3,23 @@ package com.codigoparallevar.minicards; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.MotionEvent; public class TestActivity extends AppCompatActivity { + DrawView drawView; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - DrawView drawView = new DrawView(this); + drawView = new DrawView(this); drawView.setBackgroundColor(Color.BLACK); setContentView(drawView); } + + @Override + public boolean onTouchEvent(MotionEvent event) { + return drawView.onTouchEvent(event); + } }