Ho un pulsante immagine che non risponde con un'animazione al tocco quando si fa clic perché si tratta di un'immagine statica a differenza dei normali pulsanti sul lecca-lecca che hanno l'effetto di ripple incorporato. Mi piacerebbe aggiungere l'effetto di sfioramento del disegno del materiale all'immagine ma non riesco a trovare un modo per implementarlo. Posso impostare un filtro colorato sull'immagine ma non è l'effetto a catena. Un esempio di ciò che sto cercando di fare è quando registri un'immagine di copertina di un album in Google Play Music e un'ombra si muove attraverso l'immagine.Applicazione del disegno del materiale Toccare Ripple su ImageButton?
risposta
Per ancora migliore risultato:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>
Si può solo aggiungere uno sfondo al vostro ImageButton in questo modo:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_dialog"
android:background="?android:attr/selectableItemBackground" />
Cosa succede se ho già un drawable come sfondo? – JohannaNoobie
O, in alternativa, se ci si rivolge API 21+, utilizzare 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"/>
questa risposta non funziona. – JohannaNoobie
ho avuto buone risposte da i.shadrin (here) e Nicolar s (here).
La differenza tra le loro risposte è che ?attr/selectableItemBackgroundBorderless
può darti un android.view.InflateException
, quindi la soluzione è ?android:attr/selectableItemBackground
.
FWIW, non so perché accade l'eccezione, perché la prima risposta ha funzionato bene in tutti i miei vecchi progetti, ma nel mio progetto recente non (forse perché il tema dell'app = android:Theme.Material
?).
La cosa strana che stava accadendo è che, sebbene l'effetto complessivo è stato dimostrato che era fuori di delimitazione del ImageButton, quindi la soluzione è:
- Per utilizzare la
android:foreground="?android:attr/selectableItemBackgroundBorderless"
invece diandroid:background="?android:attr/selectableItemBackgroundBorderless"
Spero che ti aiuti se stai affrontando lo stesso.
Questa è la risposta migliore: grazie alla sensazione circolare e all'effetto a catena, grazie. – ElliotM
amo questa risposta! – grAPPfruit
Come si inverte l'effetto per l'uso su uno sfondo scuro? –