Contexte
Sur l'application de numérotation d'Android, lorsque vous commencez à rechercher quelque chose et que vous cliquez sur le bouton fléché à gauche de EditText, vous obtenez un effet d'entraînement circulaire dessus:
Le problème
J'ai essayé de l'avoir aussi, mais j'en ai un rectangulaire:
<ImageButton
android:id="@+id/navButton"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/search_ic_back_arrow"/>
La question
Comment faire en sorte que le bouton ait un effet d'entraînement circulaire lorsqu'on clique dessus? Dois-je créer un nouveau dessinable, ou y a-t-il un moyen intégré pour cela?
android
button
rippledrawable
développeur android
la source
la source
Réponses:
Si vous avez déjà une image d'arrière-plan, voici un exemple d'ondulation qui ressemble à selectableItemBackgroundBorderless:
ic_filter_state.xml:
state_pressed_ripple.xml: (opacité définie à 10% sur fond blanc) 1AFFFFFF
la source
Si vous utilisez le thème AppCompat, vous pouvez définir l'arrière-plan de la vue comme suit:
Cela ajoutera une ondulation circulaire sur 21 et au-dessus et un fond carré sur en dessous de 21.
la source
android:clipChildren="false"
également permettre à l'animation de se propager.Un autre attribut avec effet d'entraînement rond, spécialement pour la barre d'action:
UPD : la couleur d'ondulation peut être modifiée par cet attribut:
Mais gardez à l'esprit que cet attribut s'applique à tous les effets d'entraînement par défaut.
la source
?
est un raccourci pour?attr/
Créez et définissez une ondulation pouvant être dessinée comme arrière-plan. Quelque chose comme ça.
la source
Ajoutez simplement cet arrière-plan à votre vue
android:background=?android:attr/actionBarItemBackground
la source
Vous pouvez créer des ondulations de cercle pouvant être dessinées à l'aide de l'
android:radius
attribut en XML.Exemple:
Faites attention, que votre
your_radius
doit être inférieure à la largeur et à la hauteur de votre vue. Par exemple: si vous avez une vue avec la taille60dp x 60dp
your_radius
doit être proche30dp
(largeur / 2 ou hauteur / 2).la source
Si vous voulez des fichiers XML plus génériques, j'ai deux fichiers:
1) btn_ripple_background avec le code:
2) ripple_circuler_shape avec code:
enfin l'utilisation:
android:foreground="@drawable/ripple_btn_background"
la source
Si vous voulez un effet d'entraînement qui ne traversera pas la limite du cercle, vous pouvez vérifier ce code. Cela fonctionne parfaitement pour moi. N'oubliez pas que vous devez donner id = @ android: id / mask dans ripple_blue.xml
ripple_blue.xml
color.xml
la source
Essayer:
la source
ajoutez simplement cet article dans votre
la source
Dans Kotlin / Java, vous pouvez faire ce qui suit
la source