Je souhaite définir un effet d'entraînement sur TextView et ImageView dans Android Studio. Comment puis-je le faire?
Réf.: 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"
/>
Si vous souhaitez que l'ondulation soit liée à la taille de l'utilisation TextView/ImageView:
<TextView
Android:background="?attr/selectableItemBackground"
Android:clickable="true"/>
(Je pense que ça a l'air mieux)
Veuillez vous reporter ci-dessous à la réponse pour l'effet d'entraînement.
ondulation sur Textview ou view:
Android:clickable="true"
Android:focusable="true"
Android:foreground="?android:attr/selectableItemBackgroundBorderless"
ondulation sur Button ou Imageview:
Android:foreground="?android:attr/selectableItemBackgroundBorderless"
Vous pouvez utiliser Android-ripple-background
Effet de départ
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();
}
});
Arrêter l'animation:
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" />
ajouter ceci en 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" />
essaye ça.
essaye ça. Ceci a fonctionné pour moi.
Android:clickable="true"
Android:focusable="true"
Android:background="?android:attr/selectableItemBackground"
outre les réponses ci-dessus, il est possible d'ajouter focusable pour éviter l'avertissement de l'éditeur d'interface utilisateur.
Android:background="?attr/selectableItemBackgroundBorderless"
Android:clickable="true"
Android:focusable="true"
Dans le cas de la solution bien votée publiée par @Bikesh M Annur ( ici ) ne fonctionne pas pour vous, essayez d'utiliser:
<TextView
...
Android:background="?android:attr/selectableItemBackgroundBorderless"
Android:clickable="true" />
<ImageView
...
Android:background="?android:attr/selectableItemBackgroundBorderless"
Android:clickable="true" />
De même, lorsque vous utilisez Android:clickable="true"
ajoutez Android:focusable="true"
parce que:
" Un widget déclaré cliquable mais non déclaré focalisable n'est pas accessible via le clavier. "
En plus de la réponse de @Bikesh M Annur, veillez à mettre à jour vos bibliothèques de support. Auparavant, j'utilisais 23.1.1 et rien ne s'est passé. Le mettre à jour en 23.3.0 a fait l'affaire.
Ou vous pouvez essayer d'utiliser cette bibliothèque (Android 9+): RippleEffect
Intégration
dependencies {
compile 'com.github.traex.rippleeffect:library:1.3'
}
Utilisation:
<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>