2012-01-05 19 views
5

Tengo un problema. Necesito unir dos imágenes de diferentes tamaños (dibujables). La idea es tener una imagen de alguien (cargada dinámicamente) que sea 100x100px y tenga un fondo transparente que sea más grande (por ejemplo, 100x120). En esos últimos 20 píxeles, tengo una flecha que se supone que apunta a la ubicación de una persona en un mapa. Entonces creo que podría hacer algo como esto:Mapas: fusionando múltiples maquiales de diferentes tamaños

Drawable[] layers = new Drawable[2]; 
layers[0] = res.getDrawable(R.drawable.background_img); 
layers[1] = res.getDrawable(R.drawable.icon); 
LayerDrawable layerDrawable = new LayerDrawable(layers); 

Pero esto simplemente superpone una imagen a otra ignorando sus límites.

Gracias de antemano, Vaidas

- ACTUALIZACIÓN: Finalmente resolvieron el problema. Funciona como un encanto :)

private Drawable createPersonDrawable(Bitmap personImage) 
{ 
    Bitmap resultingBitmap = Bitmap.createBitmap(drawableWidth, 
      drawableHeight, Bitmap.Config.ARGB_8888); 
    Canvas comboCanvas = new Canvas(resultingBitmap); 

    comboCanvas.drawBitmap(personImage, 0, 0, null); 

    // Get the bottom part of the image from resources 
    Bitmap bottomPart = BitmapFactory.decodeResource(getResources(), 
      R.drawable.person_map_icon_bottom); 

    comboCanvas.drawBitmap(bottomPart, 0, drawablePersonImageHeight, null); 
    comboCanvas.save(); 

    return new BitmapDrawable(resultingBitmap); 
} 

me encontré con la descripción aquí: http://www.jondev.net/articles/Combining_2_Images_in_Android_using_Canvas

Respuesta

1

no tengo los comandos exactos aquí, sino que debe hacer:

  1. Crear un mapa de bits con el total el tamaño que quieres.
  2. Crear un lienzo que pase el mapa de bits creado
  3. Dibuje las dos imágenes en el lienzo.
  4. Agregue el mapa de bits a la vista que está utilizando.
+0

Gracias. Trataré de publicar los resultados. –

1

si desea cambiar el tamaño y la posición Disponibles en LayerDrawable, puede utilizar setLayerSize para cambiar el tamaño estirable, y se puede utilizar para controlar la posición setLayerInset.

Cuestiones relacionadas