Ich habe eine Bildschaltfläche, die beim Klicken nicht mit einer Berührungsanimation reagiert, da es sich im Gegensatz zu normalen Schaltflächen auf dem Lutscher, die über den integrierten Welleneffekt verfügen, um ein statisches Bild handelt. Ich möchte dem Bild den Ripple-Touch-Effekt für das Materialdesign hinzufügen, kann aber anscheinend keinen Weg finden, ihn zu implementieren. Ich kann einen Farbfilter über dem Bild einstellen, aber das ist nicht der Welleneffekt. Ein Beispiel für das, was ich versuche, ist, wenn Sie ein Album-Titelbild in Google Play Music halten und sich eine Schattenwelle über das Bild bewegt.
95
android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"
(funktioniert bei <API 21). Weitere Lösungen finden Sie unter stackoverflow.com/q/28605031/599535 .Sie können Ihrem ImageButton einfach einen Hintergrund hinzufügen:
quelle
Ich habe gute Antworten von i.shadrin ( hier ) und Nicolars ( hier ) bekommen.
Der Unterschied zwischen ihren Antworten ist,
?attr/selectableItemBackgroundBorderless
dass Sie eine geben könnenandroid.view.InflateException
, also?android:attr/selectableItemBackground
ist das die Lösung.FWIW, ich weiß nicht, warum die Ausnahme auftritt, da die erste Antwort in allen meinen alten Projekten gut funktioniert hat, in meinem letzten Projekt jedoch nicht (möglicherweise, weil das App-Thema =
android:Theme.Material
?).Das Seltsame war, dass der Ripple-Effekt zwar gezeigt wurde, aber den ImageButton überstieg. Die Lösung lautet also:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
anstelle von zu verwendenandroid:background="?android:attr/selectableItemBackgroundBorderless"
Ich hoffe, es hilft Ihnen, wenn Sie vor dem gleichen stehen.
quelle
Wenn Sie bereits einen Hintergrund haben und diesen nicht ändern möchten, verwenden Sie den Vordergrund.
quelle