Android 材质设计按钮看起来更平滑,阴影更多
我试图根据材料设计指南重新创建按钮。我正在接近外观,但我似乎不能完全正确。我附上了一张照片,以便更好地解释这种差异。底部一对来自材料设计指南。整个区域似乎有更多的阴影,并且圆角看起来更平滑。有人能帮忙吗?提前谢谢 activity_main.xmlAndroid 材质设计按钮看起来更平滑,阴影更多,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"
<?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>
谢谢。我的按钮现在看起来更平滑了,但似乎并没有产生更多的阴影。当我按下按钮时,按钮升高,更多的阴影出现,但在静止状态下,它和以前一样。有线索吗?