Mapeo de imágenes en android

Hola estoy tratando de hacer Hotspot en la imagen, pero el problema es cuando el cambio de tamaño de pantalla hotspot ubicación también se cambio

He hecho las cosas siguientes desde ahora

A continuación se muestra mi archivo de diseño

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="myapp.imagemappingdemo.MainActivity"> <FrameLayout android:layout_width="7000pt" android:layout_height="5000pt"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/bolt_int" android:text="Hello World!" /> <RelativeLayout android:id="@+id/upperView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" > </RelativeLayout> </FrameLayout> 

Estoy usando código siguiente para trazar la imagen.

  screenWidth = this.getResources().getDisplayMetrics().widthPixels; ImageView btn = new ImageView(MainActivity.this); RelativeLayout.LayoutParams bp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); bp.leftMargin = (int) (774.6667 ); bp.topMargin = (int) (413.25); btn.setLayoutParams(bp); btn.setImageResource(R.drawable.ic_stat_name); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "Button Click", Toast.LENGTH_LONG).show(); } }); upperview.addView(btn, bp); 

Estoy tratando de averiguar cómo voy a calcular exactamente la posición en la pantalla diferente mediante la misma (X, Y) de coordenadas puede cualquier ayudarme en hacer lo que es la relación entre la altura de la pantalla y el ancho y coordenadas (X, y) Independientemente del tamaño de la pantalla

Si su código siguiente está funcionando para una pantalla en particular,

 bp.leftMargin = (int) (774.6667 ); bp.topMargin = (int) (413.25); 

Entonces sólo cambia los valores según la altura de la pantalla y el ancho, vamos a decir que funciona bien para 800 x 480 –

 int standardWidth = 480; int standardHeight = 800; bp.leftMargin = ((int) (774.6667 ) * dm.widthPixel)/standardWidth; bp.topMargin = ((int) (413.25) * dm.heightPixel)/standardHeight; 

Ahora el leftMargin y topMargin se actualizarán según el tamaño de la pantalla.

Espero que te ayude 🙂

Lo que usted puede hacer es que Imageview Wrap contenido y luego en java primero obtener la posición de ImageView y que añadir el margen a él y configurarlo en la vista de hotspot

Cambie X, Y de Hotspot como% de posición en la imagen – por ejemplo, la imagen tiene 100px de ancho, y el punto de acceso X es 10, por lo que tiene X = 0.1. A continuación, obtenga la matriz de imagen de la vista de imagen para flotar array:

 float[] values = new float[9]; btn.getImageMatrix().getValues(values) 

En el segundo índice que ha dejado la posición de la imagen, y en la posición de la imagen de la 5ta parte superior. Entonces usted puede conseguir la posición correcta de Hotspot:

 float hotspotX = btn.getWidth()*X + values[2]; float hotspotY = btn.getHeight()*Y + values[5]; 

El siguiente código da la altura y el ancho de la pantalla,

 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); x = size.x; y = size.y; 

(X / 2, y / 2) esto da la posición central en la pantalla.

U puede fijar el leftmargin y rightmargin en términos de y como:

 bp.leftMargin = 10*y/100; bp.rightMargin = 10*y/100; 

Esto establece su imagen 10% de distancia de margen izquierdo y derecho.

¡Espero que esto ayude! U puede hacer cambios de acuerdo a sus necesidades.

  • ¿Debo usar Bitmap o Drawable para almacenar en ImageCache en Android?
  • ¿Cómo puedo añadir un efecto de marca de agua a una imagen en Android?
  • Cambio de imagen en ImageView
  • Colocar la imagen en las coordenadas de Android
  • BitmapFactory.decodeStream devuelve siempre null y decodificador skia muestra decodificar devuelto falso
  • Mostrar fotos se queda sin memoria
  • Cómo puedo crear un RecyclerView con una imagen de tamaño fijo que envuelva el contenido y la imagen centrada en el cultivo
  • Comprimir la imagen de la cámara antes de subirla
  • Android: Scrollable (horizontal y vertical) ImageView con los botones sobrepuestos
  • ¿Cómo puedo crear una miniatura de una url de vídeo en android?
  • Android webview: detecte una larga pulsación en <a> y <img>
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.