Wie kann ich beim Berühren des Layouts einen Welleneffekt in einem einfachen linearen / relativen Layout erzielen?
Ich habe versucht, den Hintergrund eines Layouts auf Folgendes einzustellen:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
Ich sehe jedoch nur einen einfachen weißen Hintergrund und keinen Welleneffekt, wenn ich das Layout berühre. Was mache ich falsch?
Bearbeiten:
Als Referenz ist hier meine Layout-XML-Datei:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
<item android:drawable="@android:color/white"/>
Abschnitt entferne . Ich bin mir also nicht sicher, wie das funktionieren soll, wenn ich eine Hintergrundfarbe für das Layout haben möchte. Dies auf ein anderes Layout mit einer Hintergrundfarbe zu legen, funktioniert ebenfalls nicht!Antworten:
Legen Sie diese Eigenschaften in Ihrem Layout fest (wenn Ihr Layout den Standardhintergrund für Weiß / Hell hat):
In diesem Fall benötigen Sie keine benutzerdefinierte Zeichnung.
Wenn Ihr Layout jedoch einen schwarz / dunklen Hintergrund hat, müssen Sie Ihre eigene Welligkeit erstellen, die wie folgt gezeichnet werden kann:
Und dann setzen Sie diese Welligkeit als Ihre android: Hintergrund- Eigenschaft.
Sie können viele Beispiele für diese Arten von Wellen in AOSP sehen: hier
quelle
background
?Ich füge dies zusätzlich zu Igor Ganapolskys Antwort hinzu, falls jemand ein Layout mit einer anderen Farbe und einem Welleneffekt haben möchte. Sie erstellen einfach einen Welleneffekt in Drawables wie folgt:
Geben Sie es dann als Hintergrund für Ihr Layout oder als eine beliebige Schaltfläche an, wie Igor Ganapolsky in seiner Antwort erwähnt hat.
quelle
Sie müssen das folgende Code-Snippet in einem Widget (
TextView
/Button
) ändern und können den Ripple-Effekt implementieren :Und du bist gut zu gehen.
quelle
Es stellt sich heraus, dass dies wie beabsichtigt funktioniert. Der Standardwert für das Materialthema colorControlHighlight ist
#40ffffff
. Auf einem weißen Hintergrund wird dies also nicht angezeigt. Das Ändern der Hervorhebungsfarbe in etwas anderes funktioniert und / oder das Ändern der Hintergrundfarbe des Objekts.Vielen Dank an alle (besonders an Alanv, der mich in die richtige Richtung gelenkt hat).
quelle
colorControlHighlight
in Ihrem ändernstyles.xml
. Fügen Sie es beispielsweise Ihrem benutzerdefinierten Thema hinzu.Stellen Sie
android:clickable="true"
Ihr Layout ein.quelle
Dies ist ein Beispiel für das Klicken auf ein Beispiellayout mit Welligkeitseffekt:
quelle
Verwenden Sie diese Datei ripple.xml im Ordner Drawable und weisen Sie sie dann als Ansicht zu
android: background = "@ drawable / ripple"
android: clickable = "true"
quelle
Fügen Sie einfach den Standard-Ripple-Effekt mit hinzu
android:background="?selectableItemBackground"
Mögen:
quelle
Fügen Sie dies in Ihr Layout ein:
Hinweis: In der API-Dokumentation ist ein Fehler aufgetreten. Es funktioniert nur mit API> = 23
Verwenden Sie für alle API- Ebenen diese Lösung
quelle
Ich probiere all diese Antworten aus und nichts hat mir geholfen, also habe ich gelöst, den folgenden Stil zu kreieren:
Und dann habe ich mich auf mein lineares Layout angewendet:
quelle