Android drawable resource file,圆角,渐变,自定义Switch,从未如此简单!

       在日常开发中,我们都知道drawable文件夹可以放图片的用处,可是它更为强大的用法是什么呢,比如说你需要做圆角背景,圆角摁扭? 渐变背景?类似IOS的Switch?当你无从下手的时候,drawable中的drawable resource file可以轻松帮你解决这些问题!

     我们先在drawable中创建一个drawable resource file,我们会看到如下,这和xml文件大同小异准确的说,他也是xml文件

我们今天主要研究的是shape标签,我们将selector替换成shape,我们可以看到shape下,有大概如图所示的那些标签,接下来就一一介绍这些标签的作用。

  • gradient -- 颜色渐变
  • startcolor 起点颜色
  • endcolor 终点颜色
  • android:angle 角度 90度就是垂直,180度就是水平
  • solid -- 填充
  • stroke -- 描边
  • corners -- 圆角
  • padding -- 内容离边界的距离

看完这些,估计大家都明白了标题的那些要怎么做了,我们先从圆角开始

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners
        android:radius="20dp"
        />
    <solid
        android:color="#4b74ef"
        />
</shape>

这样我们一个圆角矩形就做好了,是不是很简单! 

 

接下来我们做一个渐变,我们还是继续用这个xml来做,我们添加gradient标签,代码和效果如下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners
        android:radius="20dp"
        />
    <solid
        android:color="#4b74ef"
        />
    <gradient
        android:startColor="#a448ff"
        android:endColor="#4b5bef"
        />
</shape>

 

最后我们做一个稍微有点复杂的东西,仿IOS Switch,我们这里一共需要创建3个drawable resource file。分别作为开关的摁扭,开关的凹槽,和开关打开关闭,以及开关本身

最终效果就是这个样子 

我们先做开关的摁扭,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size
        android:width="25dp"
        android:height="20dp">
    </size>
    <solid
        android:color="@android:color/white">
    </solid>
    <corners
        android:radius="9dp">
    </corners>

</shape>

然后是开关的打开和关闭状态

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

    <solid
        android:color="@android:color/holo_green_light">
    </solid>

    <corners
        android:radius="30dp">
    </corners>

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

 

最后使我们开关管理的总xml

这里我们用到selector,这个标签很好理解,就是选择,里面又若干个<item>组成,一个item是一个选项。

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

    <item
        android:state_checked="true"
        android:drawable="@drawable/trunk_on"></item>
    <item
        android:state_checked="false"
        android:drawable="@drawable/trunk_off"></item>
</selector>

 

当实际开发的过程中,的确有很多需求暂时可能做不出来,这时候大家的第一反应往往是自定义View,如果控件不复杂的话自定义View显得过于繁琐,这时候我们就要尝试一下能不能使用drawable resource file来解决这个问题,如果可以,那么就会节省下来很多时间,性能上也会比自定义View要好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值