// Zoomap app // Source code file MainActivity.java package it372.smiths.zoomap; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; import android.widget.Toast; import java.io.InputStream; import java.util.ArrayList; import java.util.Scanner; public class MainActivity extends AppCompatActivity { final float TOLERANCE = 10.0f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Declare MyView object as final (constant) if it is // used in the inner class. final MyView mv = new MyView(this); LinearLayout layout = findViewById(R.id.linear_layout); mv.setBackgroundColor(Color.parseColor("#B0B0FF")); layout.addView(mv); mv.setOnTouchListener(new View.OnTouchListener( ) { @Override public boolean onTouch(View view, MotionEvent e) { mv.performClick( ); if(e.getAction( ) == MotionEvent.ACTION_DOWN) { float xTouch = e.getX(); float yTouch = e.getY(); ArrayList points = mv.getArrayList(); for (Point p : points) { int id = p.getId(); int x = p.getX(); int y = p.getY(); double distance = Math.sqrt( Math.pow(xTouch - x, 2.0) + Math.pow(yTouch - y, 2.0)); if (distance < TOLERANCE) { Intent intent = new Intent( MainActivity.this, DetailsActivity.class); intent.putExtra("id", id); startActivity(intent); // The following toast is for testing // before the second activity is created. //Toast t = Toast.makeText( // getApplicationContext(), // String.valueOf(id), // Toast.LENGTH_SHORT); //t.show(); } } } // Return true so that the Touch event is consumed // and not available so other events like Click return true; } }); } }