Ajouter un effet d'entraînement pour mon bouton avec le bouton couleur d'arrière-plan?
J'ai créé un bouton et je veux ajouter un effet d'ondulation qui bouton de!
J'ai créé un bouton bg fichier XML: (bg_btn.xml)
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFFFFF" android:endColor="#00FF00" android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>
Et c'est mon effet d'entraînement de fichier: (ripple_bg.xml)
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="#f816a463"
tools:targetApi="lollipop">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#f816a463" />
</shape>
</item>
</ripple>
Et C'est mon Bouton qui je veux ajouter un effet d'entraînement:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="173dp"
android:textColor="#fff"
android:background="@drawable/ripple_bg"
android:clickable="true" />
Mais après l'ajout d'effet d'entraînement bouton arrière-plan est transparent, et le bouton afficher uniquement lorsque l'utilisateur clique dessus,
comme ceci:
Avant De Cliquer
Sur Cliquez Sur
Mais j'ai besoin de deux boutons couleur d'arrière-plan et l'effet d'entraînement,
J'ai trouvé une partie de ce code dans les différents blogs de Débordement de Pile, mais ce n'est pas encore travail!
- merci de faire des captures d'écran beaucoup plus petit la prochaine fois.. (redimensionner avant de les télécharger)
- vous pouvez aussi ajouter un
l
oum
pour le lien de l'image. (voir mon edit)
Vous devez vous connecter pour publier un commentaire.
Voici un autre drawable xml pour ceux qui veulent ajouter tous ensemble, fond dégradé, le rayon de l'angle et de l'effet d'entraînement:
Ajouter à l'arrière-plan de votre bouton.
ripple
.ajouter le
"?attr/selectableItemBackground"
à votre vueforeground
attribut si elle a déjà de l'expérience avecandroid:clickable="true"
forground
attribut dans le Bouton afficherforground
attribut dans le Bouton de Vue, parce que sonforeground
.tools:ignore="UnusedAttribute
).?android:attr/selectableItemBackground
(android:attr
au lieu deattr
)Ajouter un Effet d'entraînement/de l'Animation pour un Android Bouton
Il suffit de remplacer votre bouton attribut background avec android:background="?attr/selectableItemBackground" et votre code ressemble à ceci.
Une autre Façon d'Ajouter un Effet d'entraînement/de l'Animation pour Android Bouton
En utilisant cette méthode, vous pouvez personnaliser l'effet d'onde de la couleur. Tout d'abord, vous devez créer un fichier xml dans votre drawable répertoire des ressources. Créer un ripple_effect.xml fichier et ajouter le code suivant.
res/drawable/ripple_effect.xml
Et d'arrière-plan du bouton ci-dessus drawable fichier de ressources
En plus de Jigar Patel's solution, ajoutez ceci à la ripple.xml pour éviter arrière-plan transparent de boutons.
Xml complet :
Utiliser cette ripple.xml comme arrière-plan dans votre bouton :
<item android:id="@android:id/mask"> [...]
. Sauf si vous voulez un masque ovale. Merci pour votre réponse!"@color/your-color"
Lorsque le bouton a un arrière-plan de la drawable, nous pouvons ajouter un effet d'entraînement à l'avant-plan de paramètre.. découvrez ci-dessous le code de son travail pour mon bouton avec une image de fond différente
Ajouter ci-dessous les paramètre de l'effet d'entraînement
De référence lien ci-dessous
https://jascode.wordpress.com/2017/11/11/how-to-add-ripple-effect-to-an-android-app/
AppCompat v7+
Vous devez utiliser
"?android:attr/selectableItemBackground"
ou"?android:attr/selectableItemBackgroundBorderless"
, selon vos préférences. Je préfèreBorderless
.Vous pouvez mettre soit dans
android:background
ouandroid:foreground
pour garder les propriétés existantes.L'élément doit avoir
android:clickable="true"
etandroid:focusable="true"
dans l'ordre pour que cela fonctionne, mais de nombreux éléments, tels que des boutons, demandez-leur detrue
par défaut.Lorsque vous utilisez android:arrière-plan, vous remplacez beaucoup le style et l'apparence d'un bouton avec un vide de couleur.
Mise à jour: la version 23.0.0 libération de AppCompat, il y a un nouveau Widget.AppCompat.Bouton.Une couleur de style qui utilise votre thème colorButtonNormal pour les personnes handicapées de la couleur et de colorAccent pour le permis de couleurs.
Cela permet de l'appliquer à votre bouton directement via
Vous pouvez utiliser un drawable dans votre v21 répertoire pour votre arrière-plan tels que:
Cela permettra d'assurer que votre couleur d'arrière-plan est ?attr/colorPrimary et a le défaut d'ondulation de l'animation à l'aide de la valeur par défaut ?attr/colorControlHighlight (que vous pouvez aussi mettre dans votre thème si vous le souhaitez).
Remarque: vous devrez créer un sélecteur pour les moins de v21:
En plus de Sudheesh R
essayer cette
L'ajout de premier plan et cliquable attributs travaillé pour moi.
Suffit d'utiliser :
Au lieu de:
N'oubliez pas de changer votre
Button
àandroid.support.v7.widget.AppCompatButton
Une solution alternative à l'utilisation de la
<ripple>
tag (personnellement, je préfère ne pas le faire, parce que les couleurs ne sont pas "par défaut"), est la suivante:Créer un drawable pour l'arrière-plan du bouton, et comprennent
<item android:drawable="?attr/selectableItemBackground">
dans le<layer-list>
Ensuite (et je pense que c'est l'essentiel) définir par programmation
backgroundResource(R.drawable.custom_button)
sur votre occurrence de bouton.Activité/Fragment
Disposition
custom_button.xml