¿Es posible pellizcar un gradiente estirable?

Estoy usando el siguiente dibujable:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="@color/content_background_gradient_start" android:endColor="@color/content_background_gradient_end" android:angle="270" /> </shape> 

El problema es que tengo bandas severas en dispositivos hdpi (como el Nexus One y Droid) ya que el gradiente va desde la parte superior de la pantalla hasta el fondo.

De acuerdo con http://idunnolol.com/android/drawables.html#shape_gradient no hay un atributo "dither" para un degradado. ¿Hay algo que pueda hacer para suavizar el gradiente?

Nota: añadir dither = "true" a la forma no parece funcionar.

Escribí la documentación que usted mencionó. He echado otro vistazo al código y, por desgracia, no hay forma de habilitar el dithering en un GradientDrawable, sino llamando explícitamente GradientDrawable.setDither() al código.

(La forma en que se ven los códigos, técnicamente se podría incluir el degradado como el único hijo de un <selector> , y habilitar el dithering en todo el selector, sin embargo, es definitivamente un hack).

No estoy convencido de que habilitar el dithering realmente resolverá su problema, ya que el dithering (por lo menos como se indica en los documentos oficiales de Android) es para resolver problemas de bandas cuando el dispositivo tiene una paleta de colores demasiado pequeña. Esto parece ser un problema de bandas debido al tamaño del gradiente.

Hola a todos tengo el mismo problema, hay una solución que funciona, pero no es muy bueno.

 getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 

Funciona para mí, pero el problema es que las ventanas enteras son dithered. Yo estaba buscando para encontrar una manera de dither sólo el gradiente, pero no pude encontrar nada. Android: dither = "true" en xml no funciona y GradientDrawable.setDither (true) tampoco funciona. Así que cualquier idea ¿cómo puedo dither sólo el gradiente?

Me enfrenté a un problema muy similar el año pasado y no llegó a ninguna conclusión útil en la lista de desarrolladores de android.

Sin embargo, hace un tiempo descubrí – después de intentar <gradient> y todo tipo de Drawable s con varios atributos dither y crear manualmente PNGs dithered – que si crea manualmente una nueva imagen usando GIMP , y especifico la densidad en este punto Entrando 120, o 240 etc) al crear la imagen, se ve muy bien, incluso en dispositivos hdpi . Y esto es a pesar de que es un gradiente de escala de grises, con no tantos colores.

El PNG cuando se guarda termina siendo relativamente grande (por lo menos para 240dpi), pero se ve muy bien.

  • ¿Hay un cargador de nueve parches para el iPhone?
  • Ahorre batería al no dibujar en cada llamada de procesamiento
  • ¿Qué hace gl.glClearColor?
  • Animaciones para Gráficos usando la API de Google chart en android
  • Android: rotar recorta las esquinas de la forma
  • Imagen circular seleccionable como Google+
  • Android Graphics Internals
  • Escala y rota Bitmap usando Matrix en Android
  • Dibujar sector circular
  • Android - Cómo dibujar un arco basado gradiente
  • Android - Cómo combinar y mover texto alrededor de la imagen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.