Bitmap demasiado grande para ser cargado en una textura
Tengo en el directorio dibujable un archivo de imagen con el tamaño 960×1440. Cuando la aplicación se inicia, la imagen no se carga como fondo y en el logcat veo:
Bitmap demasiado grande para ser cargado en una textura (2880×4320, máx = 4096×4096)
- ¿Por qué tanta memoria?
- Escala de mapa de bits Android RemoteControlClient
- Rotar una imagen en Android sin OutOfMemoryError o downscaling
- Android cómo dibujar un mapa de bits sobre lienzo semi transparente
- ¿Cómo posiciono mi mapa de bits en el lienzo usando una matriz?
¿Por qué dice 2880×4320 si la imagen es 960×1440?
El mapa de bits se carga a través de xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/launcher_bg" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin">
- Android - Dibujar en la parte superior de una imagen
- Bitmap escalado que mantiene la proporción de aspecto
- DrawBitmap () y setPixels (): ¿cuál es el paso?
- Android: rellena mapa de bits con color
- BitmapFactory.decodeFile de memoria con imágenes 2400x2400
- Dibujar texto en la parte superior de mapa de bits no
- Cómo reflejar el mapa de bits y luego girar
- Cómo imprimir una imagen con el tamaño de papel completo (80MM) en la impresora térmica (EPSON)
Una imagen en la carpeta /drawable/
sin ninguna especificación se considera que es el "predeterminado", es decir, para 1dp = 1px que es mpdi
, entonces porque el dispositivo que está ejecutando es xxhdpi
esa imagen se incrementa durante el tiempo de ejecución.
La imagen original puede ser 960×1440, pero la conversión de mdpi
a xxhdpi
es 3 veces el tamaño, por lo que su 960×1440 se convierte en (3 * 960) x (3 * 1440) = 2880×4320, que es demasiado grande de una textura para aplicar al hardware Vistas aceleradas.
Así que para arreglar que es realmente bastante simple, usted tiene dos opciones:
- Mueva su imagen a
/drawable-nodpi/
que es simple, reduce el tamaño de .apk, pero los dispositivos finales inferiores podrían tener dificultades para cargar una imagen tan grande. - Crear imágenes escaladas en todas las densidades
mdpi
,hdpi
,xhdpi
,xxhdpi
para evitarxxhdpi
de tiempo de ejecución y tener imágenes más pequeñas en dispositivos antiguos.
- Error al iniciar Studio de Android
- Superpuesto por la barra de estado cuando se muestra el fragmento de diálogo, solo en Android4.4