Android: Combina dos vistas de imagen superpuestas en un bmp con la posición correcta

Tengo dos ImageViews. ImageView1 es una imagen de fondo y ImageView2 es una imagen más pequeña. La posición de ImageView2 está en algún lugar en el centro de la aplicación.

Me gustaría combinar esos dos ImageView en un mapa de bits para que ImageView2 se encuentra en la parte superior de ImageView1.

El proceso de combinación funciona bien, pero ImageView2 siempre está en la esquina superior izquierda del archivo bmp.

A continuación se muestra el código que usé para generar el bmp:

ImageView iv = (ImageView)findViewById(R.id.imageView1); ImageView iv2 = (ImageView)findViewById(R.id.imageView2); File rootPath = new File(Environment.getExternalStorageDirectory(), "testmerge"); if (!rootPath.exists()) { rootPath.mkdirs(); } Toast.makeText(this, rootPath.getPath(), Toast.LENGTH_LONG).show(); File dataFile = new File(rootPath, "picture.png"); iv.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); iv.layout(0, 0, iv.getMeasuredWidth(), iv.getMeasuredHeight()); iv.setDrawingCacheEnabled(true); Bitmap b1 = Bitmap.createBitmap(iv.getDrawingCache()); iv.setDrawingCacheEnabled(false); iv2.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); iv2.layout(0, 0, iv2.getMeasuredWidth(), iv2.getMeasuredHeight()); iv2.setDrawingCacheEnabled(true); Bitmap b2 = Bitmap.createBitmap(iv2.getDrawingCache()); iv2.setDrawingCacheEnabled(false); Bitmap bmOverlay = Bitmap.createBitmap(b1.getWidth(), b1.getHeight(), b1.getConfig()); Canvas canvas = new Canvas(bmOverlay); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawBitmap(b1, 0, 0, null); canvas.drawBitmap(b2, 0, 0, null); try { FileOutputStream out = new FileOutputStream(dataFile, false); bmOverlay.compress(CompressFormat.PNG, 95, out); } catch (IOException e) { e.printStackTrace(); } 

¿Puede decirme cómo puedo ajustar la posición del archivo de mapa de bits final para que el ImageViews se encuentre en la misma posición que se muestra en la aplicación?

Gracias.

One Solution collect form web for “Android: Combina dos vistas de imagen superpuestas en un bmp con la posición correcta”

Sólo cree un FrameLayout , e incluya dos ImageView s dentro de él. Naturalmente se superpondrá la primera imagen con la segunda.

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/main_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main" /> <ImageView android:id="@+id/overlay_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/overlay" /> </FrameLayout> 

Puede aplicar gravidades para centrar o alinear las imágenes.

  • Diferentes marcadores con nombre en Google Android Map
  • Mapas de Android NullPointerException ItemizedOverlay
  • Android: Si los marcadores se superponen entre sí en el mapa, el evento de clic se disparará para el último escondido
  • Mostrar una superposición de "ayuda" en un diseño de Android
  • Android: ¿Cómo overlay-a-bitmap / draw-over un mapa de bits?
  • Cómo guardar la superposición con vista previa de la cámara en android?
  • Agrega una superposición transparente mayor para aumentar el área de clic, sin cambiar el diseño.
  • Superponer un color sobre una vista
  • Android: Cuando el teclado aparece, el diseño es invisible. ¿Cómo puedo solucionar esto?
  • Animación de superposición de Facebook
  • Google maps api no coloca el marcador en la ubicación correcta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.