Android: à l'Aide d'un dégradé linéaire comme arrière-plan ressemble à bandes
J'essaye d'appliquer un dégradé linéaire de ma ListView.
Ceci est le contenu de mon drawable xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#3A3C39"
android:endColor="#181818"
android:angle="270"
/>
<corners android:radius="0dp" />
</shape>
Donc, je demande à ma ListView avec:
android:background="@drawable/shape_background_grey"
Cela fonctionne, mais il a l'air très "bandes" sur émulateur et sur un véritable appareil de trop.
Est-il possible de réduire ce "comportement"?
- Pourriez-vous poster une capture d'écran?
- Juste une mise à jour: ajout de getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); dans la méthode onCreate semble fait le truc aussi pour hdpi avec écran amoled (N1/Désir)
@Francesco
Grand! Il a aidé sur mon Galaxy S avec Android 2.2. Veuillez convertir votre observation utile à une réponse, afin que les gens peuvent voter pour elle.
Vous devez vous connecter pour publier un commentaire.
Comme Romain Guy suggère:
résout mon problème
Si ce n'est pas suffisant surtout pour les AMOLED et/ou hdpi appareils essayez ceci:
listView.getBackground().setDither(true);
pas travailler, j'ai dû remplacer laonAttachedToWindow
méthode.Vous pouvez simplement activer le tramage sur votre objet Dessiné.
setDither()
était dépréciée de l'API de niveau 23. Cette propriété est ignorée.Mettre ceci dans votre Activité:
Pour moi sur HTC Desire fonctionne comme ceci
setDither()
était dépréciée de l'API de niveau 23. Cette propriété est ignorée.Pour moi le cerclage a disparu lorsque j'ai mis le android:useLevel="true" sur le dégradé:
gradient_dark.xml
Mais j'ai d'abord essayé à l'aide d'une Couche de Liste avec un "bruit" drawable pour enlever le cerclage, ça aide, mais il y a encore quelques bandes.
La "noise_repeater" drawable j'ai créé et utilisé
Si le tramage et RGBA_888 réglage de ne pas l'aider sur certains téléphones, la solution peut consister à mettre de l'élément
layerType
àsoftware
, à désactiver l'accélération matérielleCela a réglé mon problème sur un Samsung S5 téléphone.
La seule chose qui a fonctionné pour moi a été de mettre un peu transparent de canal alpha sur le startColor et endColor.
J'ai eu l'idée d'essayer ce à partir de ce que d'autres DONC, la question: android:dither=“true” ne simule pas, quel est le problème?