Ich versuche, einen linearen Verlauf auf meine ListView anzuwenden. Dies ist der Inhalt meiner zeichnbaren 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>
Also wende ich es auf meine ListView an mit:
android:background="@drawable/shape_background_grey"
Es funktioniert, aber es sieht auf dem Emulator und auch auf einem realen Gerät sehr "gebändert" aus.
Gibt es eine Möglichkeit, dieses "Verhalten" zu reduzieren?
@Francesco
Toll! Es hat auf meinem Galaxy S mit Android 2.2 geholfen . Bitte wandeln Sie Ihren nützlichen Kommentar in eine Antwort um, damit die Leute dafür stimmen können.Antworten:
Wie Romain Guy vorschlägt:
löst mein Problem
Wenn dies insbesondere für AMOLED- und / oder HDPI-Geräte nicht ausreicht, versuchen Sie Folgendes:
quelle
listView.getBackground().setDither(true);
funktioniert nicht, musste ich dieonAttachedToWindow
Methode überschreiben .Sie können einfach das Dithering für Ihr Drawable-Objekt aktivieren.
quelle
setDither()
wurde in API-Level 23 veraltet. Diese Eigenschaft wird jetzt ignoriert.Fügen Sie dies in Ihre Aktivität ein:
quelle
Für mich funktioniert das HTC Desire so
quelle
setDither()
wurde in API-Level 23 veraltet. Diese Eigenschaft wird jetzt ignoriert.Für mich verschwand die Streifenbildung, als ich den Android: useLevel = "true" für den Farbverlauf: gradient_dark.xml festlegte
Aber zuerst habe ich versucht, eine Ebenenliste mit einem "Rauschen" zu verwenden, das zum Entfernen der Streifenbildung gezeichnet werden kann. Es hilft, aber es gibt immer noch einige Streifen.
Das "Noise_repeater" Drawable, das ich erstellt und verwendet habe
quelle
Wenn die Einstellungen für Dithering und RGBA_888 auf einigen Telefonen nicht hilfreich sind, kann die Lösung darin bestehen, das Element
layerType
auf einzustellen undsoftware
die Hardwarebeschleunigung zu deaktivierenDies hat mein Problem auf einem Samsung S5-Telefon behoben.
quelle
Das einzige, was für mich funktioniert hat, war, einen leicht transparenten Alphakanal sowohl für startColor als auch für endColor festzulegen.
Ich hatte die Idee, dies anhand dieser anderen SO-Frage zu versuchen: android: dither = "true" zittert nicht, was ist los?
quelle