área seleccionable de la imagen

Estoy diseñando un control remoto de GUI, pero en lugar de hacer botones separados para cada botón remoto, quiero obtener una imagen remota completa y configurar ciertas partes de ella con capacidad de hacer clic. ¿Hay alguna manera más que el evento de movimiento para hacer esto?

Tengo 2 soluciones para su requisito. En ambas, toda la imagen permanece activable pero puede obtener información sobre el área en la que se hace clic.

Solución 1:

puede enmascarar la imagen y obtener el color de píxel de la imagen que se encuentra debajo. Así, en última instancia, puede llegar a saber en qué área se ha hecho clic.

aquí, cada vez que se presiona, se puede verificar el color del píxel de background image de background image y hacerla coincidir con el conjunto de colores predefinidos para saber en qué área se ha hecho clic.

Imagen de primer plano: Imagen de primer plano

Imagen de fondo: Imagen de fondo

Área de clic: Representando área clicable

¿Sigo confundido?

Referencia: me gustaría sugerirle que siga este tutorial.

Solución 2:

puede mapear su imagen con coordenadas y, en consecuencia, puede obtener la información del área en la que se ha hecho clic.

Ejemplo: MappedImage con coordenadas

si no conoce las coordenadas, puede crear su imagen mapeada desde aquí

las coordenadas para Kansas se verán así:

   

MappedImage con coordenadas

Referencia: echa un vistazo a Android Image Mapping .

Espero que sea util !!

Aún puedes usar botones.

Puede colocarlos sobre su imagen en los lugares correctos y hacerlos invisibles.

En XML

  

O

 Button mybutton = (Button) v1; mybutton.setVisibility(View.INVISIBLE); 

Tuve los mismos desafíos y los resolví con la biblioteca “PhotoView” , donde puedes escuchar

 onPhotoTap(View view, float x, float y){} 

eventos y comprobar si la pestaña está dentro de su área de imagen, y luego realizar ciertas tareas.

Creé una biblioteca para ayudar a otros desarrolladores a implementar dicha funcionalidad mucho más rápido. Está en Github: ClickableAreasImages

Esta biblioteca le permite definir áreas clicables en una imagen, asociar objetos a ella y escuchar eventos táctiles en esa área.

Cómo usar la biblioteca:

 public class MainActivity extends AppCompatActivity implements OnClickableAreaClickedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Add image ImageView image = (ImageView) findViewById(R.id.imageView); image.setImageResource(R.drawable.simpsons); // Create your image ClickableAreasImage clickableAreasImage = new ClickableAreasImage(new PhotoViewAttacher(image), this); // Initialize your clickable area list List clickableAreas = new ArrayList<>(); // Define your clickable areas // parameter values (pixels): (x coordinate, y coordinate, width, height) and assign an object to it clickableAreas.add(new ClickableArea(500, 200, 125, 200, new Character("Homer", "Simpson"))); clickableAreas.add(new ClickableArea(600, 440, 130, 160, new Character("Bart", "Simpson"))); } // Listen for touches on your images: @Override public void onClickableAreaTouched(Object item) { if (item instanceof Character) { String text = ((Character) item).getFirstName() + " " + ((Character) item).getLastName(); Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } } ... } 

Mejorando la respuesta de @sealz, aquí mi respuesta: