2011-12-26 9 views
7

2.3.3 left, ICS on right (emulator). Notice the gradient fade effect difference inside the red box.problema de compatibilidad Gradiente - ICS por defecto a menos colores que todas las versiones anteriores de Android

Gingerbread (2.3.3) emulador izquierda, ICS (4.0.3) emulador derecha. Observe la diferencia de efecto de degradado de degradado dentro del cuadro rojo (ábralo en una ventana separada para ver la imagen de tamaño completo).

MAINVIEW fondo:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/app_bg" 
android:orientation="vertical" > 

... 

</LinearLayout> 

app_bg.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient android:startColor="#000" android:centerColor="#333" 
    android:endColor="#000" android:angle="270" /> 
</shape> 

Qué está causando este problema? ¿Cómo arreglar esto, para que el gradiente de ICS se vea tan sencillo como la versión 2.3.3? ¿El problema ocurre solo en el emulador?

+0

¿Su pantalla de host (es decir, la pantalla en la que se muestra el emulador) definitivamente es 32bpp? –

+0

¿Qué quieres decir? Ambos emuladores se ejecutan en el mismo monitor en el momento en que se tomó la captura de pantalla. –

+0

Mi error, no noté que la pantalla 2.3 también fue emulada. –

Respuesta

0

Acabo de verificar en el dispositivo ICS 4.0.3: este es el problema SOLAMENTE del emulador.

+1

no, no lo es. Tengo el mismo problema en galaxy note ... – syloc

1

Creo que el problema es que Android está (a la derecha) dibujando el degradado con menos colores. Creo que quieres habilitar el tramado para ayudar a ocultar la caída de la profundidad de color. Tal vez vea esta respuesta link

No estoy del todo seguro de cómo funciona, pero creo que a veces Android cambia al modo RGB_565, incluso si el dispositivo es capaz de colores de 24 bits.

+0

Sí, parece ser una especie de incumplimiento de una cantidad de colores menor a la necesaria para dibujar correctamente el degradado. Pero por qué sucede en ICS y cómo cambiarlo, no tengo ni idea y tampoco he encontrado una solución. Esperemos que alguien que conoce la respuesta lo publique aquí ... Estableciendo 'window.setFormat (PixelFormat.RGBA_8888); 'in' onAttachedToWindow() 'en la actividad donde se dibuja el fondo no soluciona el problema. –

0

Vi tu comentario que con PixelFormat.RGBA_8888 no sirvió de nada.
También puede intentar agregar el indicador de tramado: window.addFlags(WindowManager.LayoutParams.FLAG_DITHER);.
Se puede ver mi respuesta relacionado anterior sobre el tramado y colores aquí:
Awful background image quality in Android

+1

Agregué 'getWindow(). SetFormat (PixelFormat.RGBA_8888);' y 'getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_DITHER);' a mi método 'onCreate' y todavía no soluciona el problema (doesn ' Importa si es antes o después de 'super.onCreate (savedInstanceState);'). –

+1

Muy extraño, lo único que puedo pensar que causa su problema en ese caso es si el motor optimiza demasiado el dibujo, si establece el color del degradado como # FF000000 en lugar de simplemente # 000, podría funcionar, pero suena como un problema en ICS. – Jave

+0

Intenté códigos de color de 6 caracteres y códigos de color de 8 caracteres (alfa como FF) pero aún así, el gradiente parece de 90 –

1

ICS agrega automaticamente efecto de degradado si la aceleración de hardware está habilitada en la aplicación. También es posible forzar la aceleración de hardware para todas las aplicaciones, notará que algunas aplicaciones tendrán fondo degradado, en lugar de negro.

Cuestiones relacionadas