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
- Cómo obtener URL de enlace en Android WebView con HitTestResult para una imagen vinculada (y no la URL de imagen) con Longclick
- Byte a la imagen de android
- mapa de bits de Android a matriz de bytes sin compresión
- Android: Dibuja la imagen en el centro de otra imagen
- Phonegap resolveLocalFileSystemURL no funciona para el contenido de uri en android
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
- ¿Cómo se pasan las imágenes (mapas de bits) entre las actividades de androide mediante bundles?
- Cambiar imagen de contacto mediante programación
- ¿Cuál es la diferencia entre ImageView.setBackgroundResource y ImageView.setImageResource?
- Cargar una imagen de la carpeta de activos
- Cómo reducir un tamaño de archivo de imagen antes de subir a un servidor
- Android: lee la imagen PNG sin alpha y decodifica como ARGB_8888
- Redimensionamiento de mapa de bits en Android con interpolación bicúbica
- Android: calidad de las imágenes redimensionadas en tiempo de ejecución
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.
- Problemas de aceptación de entrada de archivos HTML
- Error: Watchman no se encontró en PATH en ventanas