Voglio impostare un effetto a catena su textview e imageview in Android Studio. Come posso farlo?
Voglio impostare un effetto a catena su textview e imageview in Android Studio. Come posso farlo?
Risposte:
Rif: http://developer.android.com/training/material/animations.html ,
http://wiki.workassis.com/category/android/android-xml/
<TextView
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
android:background="?android:attr/selectableItemBackground"
Borderless
youtube.com/watch?v=wOjA8tS5sbc
Se si desidera che l'ondulazione sia limitata alle dimensioni di TextView / ImageView, utilizzare:
<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>
(Penso che sembra migliore)
selectableItemBackground
vsselectableItemBackgroundBorderless
Fare riferimento alla risposta di seguito per l'effetto a catena.
ondulazione su Textview o vista:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
ripple su Button o Imageview:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
selectableItemBackgroundBorderless
è API 21+. Di seguito puoi scegliere selectableItemBackground
di evitare problemi di compatibilità
Puoi usare android-ripple-background
Inizia l'effetto
final RippleBackground rippleBackground=(RippleBackground)findViewById(R.id.content);
ImageView imageView=(ImageView)findViewById(R.id.centerImage);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rippleBackground.startRippleAnimation();
}
});
Ferma animazione:
rippleBackground.stopRippleAnimation();
<TextView
android:id="@+id/txt_banner"
android:layout_width="match_parent"
android:text="@string/banner"
android:gravity="center|left"
android:layout_below="@+id/title"
android:background="@drawable/ripple_effect"
android:paddingLeft="15dp"
android:textSize="15sp"
android:layout_height="45dp" />
aggiungi questo in drawable
<?xml version="1.0" encoding="utf-8"?>
<!--this ribble animation only working for >= android version 21-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/click_efect" />
prova questo.
prova questo. Questo ha funzionato per me.
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
Oltre alle risposte precedenti, è possibile aggiungere un focus per evitare l'avviso dell'editor dell'interfaccia utente
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
Nel caso della soluzione ben votata pubblicata da @Bikesh M Annur ( qui ) non ti funziona, prova a usare:
<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />
Inoltre, quando si utilizza android:clickable="true"
aggiungi android:focusable="true"
perché:
" Un widget che è dichiarato cliccabile ma non dichiarato focalizzabile non è accessibile tramite la tastiera. "
Inserisci
android:clickable="true"
android:focusable="true"
Per effetto a catena
android:background="?attr/selectableItemBackgroundBorderless"
Per effetto selezionabile
android:background="?android:attr/selectableItemBackground"
Per l'effetto pulsante
android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
Oltre alla risposta di @Bikesh M Annur, assicurati di aggiornare le tue librerie di supporto. In precedenza stavo usando 23.1.1 e non è successo nulla. L'aggiornamento a 23.3.0 ha funzionato.
per l'ondulazione del cerchio:
android:background="?attr/selectableItemBackgroundBorderless"
per l'ondulazione del rettangolo:
android:background="?attr/selectableItemBackground"
Oppure puoi provare a utilizzare questa libreria (Android 9+): RippleEffect
Integrazione
dependencies {
compile 'com.github.traex.rippleeffect:library:1.3'
}
Uso:
<com.andexert.library.RippleView
android:id="@+id/more"
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:layout_toLeftOf="@+id/more2"
android:layout_margin="5dp"
rv_centered="true">
<ImageView
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:src="@android:drawable/ic_menu_edit"
android:layout_centerInParent="true"
android:padding="10dp"
android:background="@android:color/holo_blue_dark"/>
</com.andexert.library.RippleView>
selectableItemBackground
come target Android 4 e versioni successive.
Utilizzando le biblioteche. Questo è uno di questi. Basta aggiungere la sua dipendenza e inserire il codice seguente in xml prima di ogni elemento che necessita dell'effetto a catena:
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">