web-dev-qa-db-fra.com

Comment définir un effet d'entraînement sur TextView ou ImageView sur Android?

Je souhaite définir un effet d'entraînement sur TextView et ImageView dans Android Studio. Comment puis-je le faire?

103
Vasant

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"
/>
235
Bikesh M

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)

65
Micro

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"
12
Vasant

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();
8
IntelliJ Amiya
<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.

5
Karthik Sridharan

essaye ça. Ceci a fonctionné pour moi.

Android:clickable="true"
    Android:focusable="true"
    Android:background="?android:attr/selectableItemBackground"
4
Juboraj Sarker

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"
4
Zafer Celaloglu

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. "

3
Filipe Brito

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.

2
Mark Pazon

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>
1
walkmn