Je souhaite définir un effet d'entraînement sur la vue textuelle et la vue image dans Android Studio. Comment puis-je le faire?
Je souhaite définir un effet d'entraînement sur la vue textuelle et la vue image dans Android Studio. Comment puis-je le faire?
Réponses:
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"
/>
android:background="?android:attr/selectableItemBackground"
Borderless
youtube.com/watch?v=wOjA8tS5sbc
Si vous voulez que l'ondulation soit limitée à la taille de TextView / ImageView, utilisez:
<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>
(Je pense que ça a l'air mieux)
selectableItemBackground
vsselectableItemBackgroundBorderless
Veuillez vous référer à la réponse ci-dessous 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"
selectableItemBackgroundBorderless
s'agit de l'API 21+. Ci-dessous, vous pouvez choisir selectableItemBackground
d'éviter les problèmes de compatibilité
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 dans 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. Cela a fonctionné pour moi.
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
En plus des réponses ci-dessus, il est possible de faire la mise au point pour éviter l'avertissement de l'éditeur d'interface
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
Dans le cas où 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 plus, lorsque vous utilisez android:clickable="true"
add android:focusable="true"
car:
" Un widget déclaré cliquable mais non déclaré focusable n'est pas accessible via le clavier. "
Ajouter
android:clickable="true"
android:focusable="true"
Pour l'effet d'entraînement
android:background="?attr/selectableItemBackgroundBorderless"
Pour un effet sélectionnable
android:background="?android:attr/selectableItemBackground"
Pour l'effet Button
android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
En plus de la réponse de @Bikesh M Annur, assurez-vous de mettre à jour vos bibliothèques de support. Auparavant, j'utilisais 23.1.1 et rien ne s'est passé. La mise à jour vers 23.3.0 a fait l'affaire.
pour l'ondulation du cercle:
android:background="?attr/selectableItemBackgroundBorderless"
pour l'ondulation du rectangle:
android:background="?attr/selectableItemBackground"
Ou vous pouvez essayer d'utiliser cette bibliothèque (Android 9+): RippleEffect
L'intégration
dependencies {
compile 'com.github.traex.rippleeffect:library:1.3'
}
Usage:
<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
lorsque vous ciblez Android 4 et supérieur.
Utilisation des bibliothèques. C'est l' un d'entre eux. Ajoutez simplement sa dépendance et placez le code ci-dessous en xml avant chaque élément nécessitant un effet d'entraînement:
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">