Android -- XML Drawable

1.下面通过一个自定义按钮来讲解一下 XML Drawable 的使用 ,先看一下按钮的效果图

Android -- XML Drawable_第1张图片

看一下按钮正常状态下的 drawable 文件

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

    <corners android:radius="10dp">

    </corners>

    <gradient  android:angle="90" android:endColor="#6babf5" android:startColor="#096dba">
    </gradient>
</shape>

corners 用于设置圆角大小,gradient用于设置渐变颜色,angle属性设置的是渐变方向,我设置的是90度方向,endcolor 的意思就是指向渐变方向的颜色变化趋势,startcolor 的意思就是刚开始的颜色。

一般而言,我们希望按钮点击时能够有一些效果,也就是和之前有些不一样,那么就要借助到 Drawable 中的 selector 了,首先在配置一个点击状态下的按钮效果,如下所示

shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">

    <corners android:radius="10dp">

    </corners>

    <gradient  android:angle="270" android:endColor="#6babf5" android:startColor="#096dba">
    </gradient>

</shape>

这里只改变了一个值,也就是angle,其他属性保持不变。然后开始配置 selector,如下

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

    <item  android:drawable="@drawable/button_normal" android:state_pressed="false">

    </item>

    <item  android:drawable="@drawable/button_press" android:state_pressed="true">
    </item>

</selector>

只需要加一个判断,只要 state_pressed 属性为true,就使用点击状态的 button drawable,否则就是用普通状态下的。同时,为了美观,我们也为Button text 设置一下 selector,如下示

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

    <item android:color="#ffffff" android:state_pressed="true"></item>
    <item android:color="#8e8e8e" android:state_pressed="false"></item>
</selector>

非常好理解,点击时为白色,非点击状态下为灰色,这个时候点击状态下的按钮如下图示

Android -- XML Drawable_第2张图片

2.关于阴影

对于这个按钮,我们是可以手动的为其添加阴影效果的,不过要借助于 layer-list 和 inset 属性,首先我们可以在 layer-list 下配置一个drawable,当然以后会处在我们的按钮背景底下,可以让它背景色为灰色,然后借助 inset 让其向下偏移一些距离,就可以实现我们想要的阴影效果了,配置文件如下图所示

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape  android:shape="rectangle">

            <corners android:radius="10dp">

            </corners>

            <gradient  android:angle="90" android:endColor="#8e8e8e" android:startColor="#8e8e8e">
            </gradient>
        </shape>
    </item>

    <item>
        <inset  android:drawable="@drawable/button_shape" android:insetBottom="2dp">

        </inset>
    </item>
</layer-list>

这个阴影就已经显现出来了。

对于 XML Drawable 还有很多特殊的效果,合理的使用可以很大程度上增强应用的美感。

你可能感兴趣的:(android,xml,drawable)