Ich habe eine Bildschaltfläche, die nicht mit einer Touch-Animation reagiert, wenn sie angeklickt wird, da es sich um ein statisches Bild handelt, im Gegensatz zu regulären Tasten auf Lollipop, die mit dem eingebauten Ripple-Effekt ausgestattet sind. Ich möchte dem Bild den Material Design-Ripple-Touch-Effekt hinzufügen, finde aber keine Möglichkeit, es zu implementieren. Ich kann einen Farbfilter über das Bild setzen, aber das ist nicht der Welleneffekt. Ein Beispiel für das, was ich versuche, ist, wenn Sie ein Albumcover-Bild in Google Play Musik halten und eine Schattenrunzel über das Bild bewegt.Wenden Sie Material Design Touch Ripple auf ImageButton an?
Antwort
Für noch besseres Ergebnis:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>
Sie können nur einen Hintergrund zu Ihrem Image wie folgt hinzu:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_dialog"
android:background="?android:attr/selectableItemBackground" />
Was passiert, wenn ich bereits einen Hintergrund als Hintergrund habe? – JohannaNoobie
Oder alternativ, wenn Sie API 21+, verwenden Sie Targeting sind backgroundTint
:
<ImageButton
android:backgroundTint="@color/white"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/ic_button"
style="@style/Widget.AppCompat.ImageButton"/>
diese Antwort funktioniert nicht. – JohannaNoobie
ich habe gute Antworten von i.shadrin (here) und Nicolar s (here).
Der Unterschied zwischen ihren Antworten ist, dass ?attr/selectableItemBackgroundBorderless
Ihnen eine android.view.InflateException
geben kann, so dass die ?android:attr/selectableItemBackground
die Lösung ist.
FWIW, ich weiß nicht, warum die Ausnahme passiert, weil die erste Antwort in allen meinen alten Projekten gut funktionierte, aber in meinem letzten Projekt nicht (vielleicht weil das App-Thema = android:Theme.Material
?).
Das Merkwürdige, das geschah, ist, dass, obwohl die sich allmählich ausbreitende Wirkung gezeigt wurde, war es das Image out-begrenzende, so ist die Lösung:
- Um
die android:foreground="?android:attr/selectableItemBackgroundBorderless"
statt android:background="?android:attr/selectableItemBackgroundBorderless"
zu verwenden Ich hoffe, es hilft Ihnen, wenn Sie vor dem gleichen stehen.
Dies ist die bessere Antwort - danke für das kreisförmige Gefühl und den Welleneffekt. – ElliotM
ich liebe diese Antwort! – grAPPfruit
Wie invertieren Sie den Effekt für den Einsatz auf dunklem Hintergrund? –