Cómo cambiar el tamaño y la posición de Drawables dentro de un LayerDrawable en Android

Tengo un LayerDrawable, que debe mostrar 5 Bitmaps. 1 fondo y 4 iconos (que pueden ser diferentes para cada LayerDrawable) como una cuadrícula. Desafortunadamente estos iconos no tienen el mismo ancho que la altura. Mi problema es cambiar el tamaño de ellos, manteniendo su ratio y colocarlos dentro de su posición (1-4 iconos, 5 de fondo):

================== | | | | | 1 | | 2 | |------.5 .------| |------. .------| | 3 | | 4 | | | | | ================== 

Si vuelvo a Gravity.CENTER según el tamaño estos Gravity.CENTER bits, déles Gravity.CENTER que no Gravity.CENTER más dentro de los límites del rectángulo del fondo. Si dejo Gravity.CENTER parecen obtener rescaled tan pronto como llamo layerDrawable.setLayerInset(numlayer, left, top, right, bottom) . ¿Cuál es la manera correcta de hacerlo? ¿Cómo puedo mantener su proporción al colocarlas correctamente? Lo que también no podía entender hasta ahora es por qué getIntrinsicWidth / Height de BitmapDrawable está devolviendo algo más (menor) que getWidth / Height de Bitmap original.
Lo que intenté:
1. Obtenerlos de XML, poniendo un 'dummy-drawable' en el interior y reemplazarlo con el resultado descrito anteriormente. 2. Cree LayerDrawable dentro de mi programa pasando todos los drawables dentro. Parece que setLayerInset no tiene ningún efecto, o sólo veo el fondo (que era el elemento 0 dentro de mi matriz Drawable)
3. Extender LayerDrawable y tratar de seguir la pista de cualquier cosa yo mismo sin resultados razonables

El BitmapDrawable , dy por defecto, llena sus límites con el Bitmap dado. Si empieza a usar Gravity , el Bitmap será la posición de acuerdo con la Gravity dada. Supongo que en su caso, la mejor opción es crear su propio Drawable .

En cuanto a los métodos getIntrinsic [Height | Width], devuelven el tamaño real de su Bitmap subyacente, que puede ser diferente si el sistema lo redimensionó al cargarlo (por ejemplo, una imagen hdpi cargada en una pantalla mdpi).

  • Uso de la clase EffectFactory en mapa de bits - Android
  • Android - cómo evitar la memoria sobre la carga mediante mapas de bits?
  • Cómo obtener un mapa de bits de VectorDrawable
  • Obtener y establecer tabla de colores de mapa de bits en android
  • Android: los mapas de bits cargados desde la galería se giran en ImageView
  • Crear Bitmap NullPointerException
  • Android: reduce el tamaño del archivo de imagen
  • No se puede comprimir un mapa de bits reciclado
  • Escala de mapa de bits Android RemoteControlClient
  • Cómo trabajar con Bitmap (Effects) en Android?
  • MAT (Eclipse Memory Analyzer) - cómo ver los mapas de bits del volcado de memoria
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.