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
- Android: cómo convertir todo ImageView a Bitmap?
- Conversión de mapa de bits Java a matriz de bytes
- Android obtiene la posición del mapa de bits en ImageView
- Descarga asíncrona de mapas de bits en un adaptador, con énfasis en Bitmap.recycle ()
- BitmapFactory.decodeFile de memoria con imágenes 2400x2400
- El envío de entrada de ANR excedió el tiempo de espera en Android 4.4
- Cómo mosaico de un mapa de bits en una lona
- Cómo desenfocar un mapa de bits (Android)?
- Cómo combinar mapas de bits en android?
- Combinar dos mapas de bits en android
- Cómo enmascarar Bitmap con el sombreado LinearGradient correctamente?
- Convertir Android.Graphics.Bitmap a la imagen
- Cómo convertir la cadena de EditText en mapa de bits?
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).
- Cómo obtener la página en blanco en Android WebViewClient
- Tamaño del elemento de configuración del navegador de Android demasiado pequeño