新的材料设计指南引入了升高的按钮,这些按钮会丢掉漂亮的阴影根据预览SDK文档,新SDK中将提供elevation
属性。但是,现在有什么方法可以达到类似的效果吗?
答案 0 :(得分:2)
这对我有用。
布局按钮
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/button_size"
android:layout_height="@dimen/button_size"
android:background="@drawable/circular_button_ripple_selector"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@color/button_text_selector"
android:stateListAnimator="@anim/button_elevation"/>
<强> drawble / button_selector.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/button_selected"/>
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed"/>
<item android:drawable="@drawable/button"/>
</selector>
<强>动画/ button_elevation.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:state_pressed="true">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueFrom="2dip"
android:valueTo="4dip"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueFrom="4dip"
android:valueTo="2dip"
android:valueType="floatType" />
</item>
</selector>
如果你有一个长方形的按钮,那么你就完成了。但如果你有圆形或椭圆形按钮,那么看起来就像,
要从圆形或椭圆形按钮中移除角落,请将此代码添加到.java
文件中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...........
int buttonSize = (int) getResources().getDimension(R.dimen.button_size);
Outline circularOutline = new Outline();
circularOutline.setOval(0, 0, buttonSize, buttonSize);
for (int i = 0; i < MAX_BUTTONS; i++) {
Button button = ......
.......
button.setOutline(circularOutline);
........
}
.....
}
去除角形!!现在,它看起来就像
答案 1 :(得分:0)
您可以使用带阴影的9补丁图像。将图像放在drawable - xxhdpi中,并将其设置为按钮或其他元素的背景。
android:background="@drawable/shadow_bg"
答案 2 :(得分:0)
或者您可以将CardView用作Button并将其CardView用作Button及其setCardElevation方法。 结合触摸事件和ValueAnimator,您可以在按钮下方获得漂亮的动画阴影。