studio programacion móviles libros libro desarrollo desarrollar curso aprende aplicaciones android xml bitmap

programacion - Tamaño de imagen de mapa de bits de Android en XML



manual de programacion android pdf (5)

Aunque no hay parámetros de ancho y alto para el mapa de bits, puede establecer el tamaño del mapa de bits utilizando la gravedad y el ancho / alto del elemento.

<item android:width="230dp" android:height="70dp"> <bitmap android:gravity="fill_horizontal|fill_vertical" android:src="@drawable/screen" /> </item>

Puede establecer el ancho y alto del elemento y escalar el mapa de bits dentro de él usando la gravedad.

Sé que esta es una pregunta antigua, pero tal vez alguien lo encuentre útil.

ADVERTENCIA:

Como ya se mencionó en los comentarios, este método SÓLO funciona con API nivel 23 (Android 6.0) y superior.

En mi archivo XML, estoy usando bitmap como el siguiente

<bitmap android:src="@drawable/Icon" android:gravity="center"/>

Aquí el ancho de la imagen del icono excede la pantalla.

Intenté Android: width = "100dp" y todo. Pero no está funcionando.

Archivo XML completo:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <stroke android:width="3dp" android:color="@color/black" /> <solid android:color="@color/bg_green" /> </shape> </item> <item> <bitmap android:src="@drawable/Icon" android:gravity="center"/> </item> </layer-list>

¿Cómo puedo reducir el ancho y la altura del mapa de bits anterior?


De los desarrolladores de Android vi que no hay etiqueta para Bitmap XML que le permita cambiar su tamaño. Debe hacer esto a través de algunas aplicaciones gráficas como GIMP. Como ya dijo @Kevin Cooper, lo ideal sería crear diferentes conjuntos de recursos (con diferentes tamaños) para diferentes tipos de pantalla.

Pero aún puedes redimensionarlo usando atributos de ancho y alto en ImageView , en lugar de crear un mapa de bits con diferentes tamaños:

<ImageView android:layout_width="50dp" android:layout_height="50dp" android:scaleType="center" android:src="@drawable/Icon" />

Si desea reutilizar esta imagen en otros lugares, puede crear un estilo separado y reutilizarlo:

// in styles.xml <style name="Icon24x24"> <item name="android:src">@drawable/Icon</item> <item name="android:gravity">center</item> <item name="android:layout_width">24dp</item> <item name="android:layout_height">24dp</item> </style> // in layout.xml <ImageView style="@style/Icon24x24"/>

Otra forma de reutilizar puede ser crear un archivo de diseño separado para un ImageView y luego incluirlo en otros diseños.

Si desea utilizar este bitmap de bitmap dentro de la lista de capas, consulte la respuesta de @Kevin Cooper, ya que sugirió que es posible agregar rellenos al layer list item :

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="20dp" android:right="20dp"> <bitmap android:src="@drawable/Icon" android:gravity="center" /> </item> </layer-list>

Y como @Nicolo también apuntó, desde API 23, es posible establecer android:width y android:height" en el elemento.


Intenta hacerlo de esta manera, esto funcionó para mí:

<item android:left="200dp" android:right="200dp"> <bitmap android:src="@drawable/splash_background" android:gravity="center" /> </item>


Si desea reducir el ancho y la altura para que encaje en la pantalla, y no necesita establecer dimensiones exactas, puede simplemente configurar left y right en el elemento principal. Eso esencialmente agregará un margen alrededor de la imagen por lo que ocupa menos espacio:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:left="20dp" android:right="20dp"> <bitmap android:src="@drawable/Icon" android:gravity="center" /> </item> </layer-list>

Idealmente, sin embargo, debería cargar imágenes de diferentes tamaños para cada resolución de pantalla (p. hdpi , xxhdpi , xxhdpi ) y luego no tendrá que establecer el tamaño de forma programática. Puedes ver la lista completa here .


Solo usa

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:width="30dp" android:height="30dp" android:gravity="center" > <bitmap android:src="@drawable/screen"/> </item> </layer-list>

en lugar

<item android:width="200dp" android:height="200dp" android:drawable="@drawable/splash_background" android:gravity="center" />