¿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.
- Cambiar el fondo del botón alfa sin cambiar el valor del alfabeto del texto en Android?
- Rotar imagen de arrastre de zoom en la vista de imagen de android
- Estoy utilizando animaciones de Android para girar un ImageView, pero el movimiento es muy agitado
- ¿Cómo configurar la opacidad de la forma?
- ¿Qué capacidades de eliminación automática de overdraw Android proporciona?
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.
- ¿Puedo dibujar con antialiasing sobre lienzo?
- Android drawBitmap 5x diferencia de rendimiento
- ¿Hay una manera de dibujar gráficos y gráficos en Android?
- Ideas para la física para rodar dados
- Dibujo de nueve parche sobre lienzo (Android)
- Uso de archivos SVG con libgdx
- Cómo averiguar la escala de una matriz de gráficos en Android
- Gráficos para Android
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.
- Habilitar android: largeHeap en Android 4 y deshabilitarlo en Android 2.3
- ¿Cómo detectar cuándo un dispositivo BLE ya no está en el rango?