Android 材质设计按钮看起来更平滑,阴影更多

Android 材质设计按钮看起来更平滑,阴影更多,android,android-layout,material-design,Android,Android Layout,Material Design,我试图根据材料设计指南重新创建按钮。我正在接近外观,但我似乎不能完全正确。我附上了一张照片,以便更好地解释这种差异。底部一对来自材料设计指南。整个区域似乎有更多的阴影,并且圆角看起来更平滑。有人能帮忙吗?提前谢谢 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

我试图根据材料设计指南重新创建按钮。我正在接近外观,但我似乎不能完全正确。我附上了一张照片,以便更好地解释这种差异。底部一对来自材料设计指南。整个区域似乎有更多的阴影,并且圆角看起来更平滑。有人能帮忙吗?提前谢谢

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/buttonTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        style="@style/buttonTest1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/buttonTest"
        android:layout_toEndOf="@id/buttonTest"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:textColor="@color/colorWhite"
        style="@style/buttonTest2" />

</RelativeLayout>

styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryColorDark</item>
        <item name="colorAccent">@color/accentColor</item>
    </style>

    <style name="buttonTest1" parent="android:style/Widget.Material.Button">
        <item name="android:background">@drawable/button1_background</item>
    </style>

    <style name="buttonTest2" parent="android:style/Widget.Material.Button">
        <item name="android:background">@drawable/button2_background</item>
    </style>

</resources>
<style name="buttonTest1" parent="android:style/Widget.Material.Button">
    <item name="android:background">@drawable/button1_background</item>
    <item name="android:stateListAnimator">@anim/buttons_state_list_animator</item>
</style>

@颜色/原色
@颜色/原色深色
@颜色/强调色
@可拉伸/按钮1_背景
@可绘图/按钮2\u背景
button2_background.xml

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

创建一个像这样的绘图,并将其作为按钮背景

<?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>

到你的按钮

使用状态列表动画最终解决了我的问题。对于圆角,我使用了Rishad Appat的解决方案。我在下面提供了一些xml代码。只要将StyleButtonTest1应用到您的按钮上,它就会工作

styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryColorDark</item>
        <item name="colorAccent">@color/accentColor</item>
    </style>

    <style name="buttonTest1" parent="android:style/Widget.Material.Button">
        <item name="android:background">@drawable/button1_background</item>
    </style>

    <style name="buttonTest2" parent="android:style/Widget.Material.Button">
        <item name="android:background">@drawable/button2_background</item>
    </style>

</resources>
<style name="buttonTest1" parent="android:style/Widget.Material.Button">
    <item name="android:background">@drawable/button1_background</item>
    <item name="android:stateListAnimator">@anim/buttons_state_list_animator</item>
</style>

@可拉伸/按钮1_背景
@动画/按钮\u状态\u列表\u动画师
按钮\u状态\u列表\u animator.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_pressed="true"
        android:state_enabled="true">
        <set>
            <objectAnimator
                android:propertyName="translationZ"
                android:duration="@integer/button_duration"
                android:valueTo="@dimen/button_rise"
                android:valueType="floatType" />
            <objectAnimator
                android:propertyName="elevation"
                android:duration="0"
                android:valueTo="@dimen/button_elevation"
                android:valueType="floatType" />
        </set>
    </item>

    <item
        android:state_enabled="true">
        <set>
            <objectAnimator
                android:propertyName="translationZ"
                android:duration="@integer/button_duration"
                android:valueTo="0"
                android:startDelay="@integer/button_duration"
                android:valueType="floatType" />
            <objectAnimator
                android:propertyName="elevation"
                android:duration="0"
                android:valueTo="@dimen/button_elevation"
                android:valueType="floatType" />
        </set>
    </item>

    <item>
        <set>
            <objectAnimator
                android:propertyName="translationZ"
                android:duration="0"
                android:valueTo="0"
                android:valueType="floatType" />
            <objectAnimator
                android:propertyName="elevation"
                android:duration="0"
                android:valueTo="0"
                android:valueType="floatType" />
        </set>
    </item>

</selector>

button1_background.xml

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

button_background.xml,由Rishad Appat提供

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorBackgroundTest" />
<corners android:radius="2dp" />
</shape>

谢谢。我的按钮现在看起来更平滑了,但似乎并没有产生更多的阴影。当我按下按钮时,按钮升高,更多的阴影出现,但在静止状态下,它和以前一样。有线索吗?