web-dev-qa-db-fra.com

Effet tactile Android L sur la forme?

J'ai un rectangle arrondi avec une altitude qui projette une ombre, comme dans l'exemple ci-dessous: http://developer.Android.com/preview/material/views-shadows.html#shadows

Voici ma forme:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <solid Android:color="@Android:color/white" />
    <corners Android:radius="6dp" />
</shape>

Je souhaite obtenir l'effet tactile "ondulé" de Nice que tout le reste a, mais lorsqu'il est défini comme arrière-plan de la vue, aucun retour tactile n'est donné. La forme reste blanche.

Donc, je l'ai fait dans un layer-list:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:shape="rectangle">
            <solid Android:color="@Android:color/white" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
    <item Android:drawable="?android:selectableItemBackground" />
</layer-list>

Maintenant, je reçois des commentaires agréables lorsque je tape dessus, mais il y a un problème.

Le contour de la forme du rectangle arrondi a été perdu. Il dessine toujours très bien le rectangle arrondi blanc, mais l’ombre est exprimée sous la forme d’un rectangle non arrondi (bords carrés), et l’ondulation disparaît complètement au-delà des angles:

Bad corners

Cela ne semble pas trop horrible ici, mais sur l'appareil, il est plutôt laid et rebutant.

Y'a t'il un moyen d'arranger cela? La section Outline du premier lien semble être ce que je veux, mais je ne peux pas comprendre comment l'implémenter.

42
Steven Schoen

Essayez celui-là:

ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple Android:color="@color/COLOR_WHILE_PRESSING" xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <item Android:drawable="@drawable/background"></item>
</ripple>

background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
 <solid Android:color="@color/BACKGROUND_COLOR" />
 <corners Android:radius="6dp" />
</shape>

Ou peut-être que cet article vous aidera: Android L FAB Button shadow

J'y ai expliqué comment implémenter le nouveau bouton FAB. J'ai également utilisé les grandes lignes pour cela.

70
theyanu
<RelativeLayout
 Android:foreground="?android:attr/selectableItemBackground">

</RelativeLayout>
2
vishal gupta

cliquez ici pour le code source complet

Créer le fichier button.xml dans un dossier pouvant être dessiné

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" Android:drawable="@color/colorPrimaryDark"/>
    <item Android:drawable="@color/colorPrimary"/>
</selector>

Créer le fichier button.xml dans le dossier drawable-v21

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:color="?android:colorControlHighlight">
    <item Android:drawable="@color/colorPrimary" />
</ripple>

vous pouvez définir button.xml comme arrière-plan de votre vue.

<TextView Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="8dp"
    Android:background="@drawable/button"
    Android:clickable="true"
    Android:gravity="center"
    Android:padding="16dp"
    Android:text="Android Ripple Effect Custom"
    Android:textColor="#fff"
    Android:textSize="18sp" />

si vous souhaitez une couleur personnalisée pour l’effet d’ondulation au lieu du gris par défaut, vous pouvez l’archiver en ajoutant colorControlHighlight dans votre style.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlHighlight">@color/colorPrimaryDark</item>
    </style>

</resources>
2
nirav kalola

bouton d'effet tactile en studio Android

       <com.xgc1986.ripplebutton.widget.RippleButton
        Android:id="@+id/Summit"
        Android:layout_width="260dp"
        Android:layout_height="50dp"
        Android:text="Login"
        Android:textColor="@color/white"
        Android:textStyle="bold"
        app:buttonColor="@color/Button"
        app:rippleColor="@color/white" />

Pour plus de références, cliquez ici http://androiddhina.blogspot.in/2015/04/Android-ripple-touch-effect-example.html

1
Dhina k

Ceci est avec ondulation et liste de couches.

<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="@color/colorRipple">
<item>
    <layer-list>
        <item>
            <shape Android:shape="rectangle">
                <solid Android:color="#349F37" />
                <corners Android:radius="6dp" />
                <stroke
                    Android:width="2dp"
                    Android:color="#50E751" />
            </shape>
        </item>
    </layer-list>
</item>

0
kelvincer