Estoy intentando superponer dos imágenes en mi aplicación, pero parecen fallar en mi canvas.setBitmap()
línea. ¿Qué estoy haciendo mal?
private void test() {
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.t);
Bitmap mBitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.tt);
Bitmap bmOverlay = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), mBitmap.getConfig());
Canvas canvas = new Canvas();
canvas.setBitmap(bmOverlay);
canvas.drawBitmap(mBitmap, new Matrix(), null);
canvas.drawBitmap(mBitmap2, new Matrix(), null);
testimage.setImageBitmap(bmOverlay);
}
Respuestas:
Puede omitir la compleja manipulación de Canvas y hacer esto completamente con Drawables, usando
LayerDrawable
. Tiene una de dos opciones: puede definirlo en XML y luego simplemente establecer la imagen, o puede configurar unLayerDrawable
código dinámicamente.Solución # 1 (a través de XML):
Cree un nuevo archivo XML Drawable, llamémoslo
layer.xml
:Ahora configure la imagen usando ese Drawable:
Solución # 2 (dinámica):
(No he probado este código, por lo que puede haber un error, pero este esquema general debería funcionar).
fuente
ok solo para que sepas que hay un programa que se llama DroidDraw. Puede ayudarte a dibujar objetos y probarlos uno encima del otro. Probé su solución pero tenía una animación debajo de la imagen más pequeña, por lo que no funcionó. Pero luego intenté colocar una imagen en un diseño relativo que se supone que debe estar debajo primero y luego, encima de eso, dibujé la otra imagen que se supone que se superpondrá y todo funcionó muy bien. Así que RelativeLayout, DroidDraw y ya está listo :) Simple, sin ningún tipo de jiggery pockery :) y aquí hay un poco de código para usted:
El logo estará encima de la imagen de fondo de Shazam.
fuente
Puede usar el siguiente código para resolver el problema o descargar la demostración aquí
Crea dos funciones para manejar cada una.
Primero, se dibuja el lienzo y las imágenes se dibujan una encima de la otra desde el punto (0,0)
Al hacer clic en el botón
Función para crear una superposición.
Lee mas
fuente
Es una respuesta un poco tardía, pero cubre la fusión de imágenes de URL con Picasso
MergeImageView
xml
Ejemplo
fuente
esta es mi solución:
uso:
o
y los resultados:
Modo de superposición:
Modo de pantalla:
fuente