自定义按钮--Selector

前言:

在于一个界面中,与用户产生交互最多的控件就是按钮,不过是Button,还是LIst View里面的item,都起到一个按钮的功能。用户通过点击这些显式或者隐式的按钮,来达到和程序交互的作用。而Android原生的按钮都是千篇一律的白色方块,这样的UI不仅会让用户感到审美疲劳,就连开发者也会感觉到死板,所以如恶化定制一个合适的按钮来搭配自己的整个界面的风格是很重要的。这里就需要用到Selector,来达到按钮的定制功能。

讲解:

Selector的作用是实习那静态绘图中的反馈事件,通过给不同的事件设置不同的图像或者渐变效果。

  1. 首先在res/drawable内创建一个selectortest.xml文件

创建完后的代码是这样的,然后在selector标签里面进行一些设置

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

</selector>
  1. 首先是设置不同的事件点击效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--默认时的背景图片-->
    <item android:drawable="@drawable/selectortest"/>
    <!--没有焦点时的背景图片-->
    <item android:state_window_focused="true"
        android:drawable="@drawable/selectortest"/>
    <!--非接触模式下获得焦点并单击时的背景图片-->
    <item android:state_pressed="true"
        android:state_focused="true"
        android:drawable="@drawable/selectortest"/>
    <!--触摸模式下单机时的背景图片-->
    <item android:state_focused="false"
        android:state_pressed="true"
        android:drawable="@drawable/selectortest"/>
    <!--选中图片时的背景图片-->
    <item android:state_selected="true"
        android:drawable="@drawable/selectortest"/>
    <!--获得焦点时的背景图片-->
    <item android:state_focused="true"
        android:drawable="@drawable/selectortest"/>
</selector>

根据不通的需求,可以设置不同的响应事件反馈。然后可以通过另外的几个标签来进行其他的设计。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--默认时的背景图片-->
    <item android:state_pressed="true">
        <!--设置形状-->
        <shape android:shape="rectangle">
            <!--填充的颜色-->
            <solid android:color="@color/colorAccent"/>
            <!--设置按钮的四个角为弧形-->
            <!--android:radius 弧形的半径-->
            <corners android:radius="5dip"/>
            <!--padding:Button里面的文字与Button边界的间隙-->
            <padding
                android:left="10dp"
                android:bottom="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/colorAccent"/>
            <corners android:radius="5dip"/>
            <padding
                android:bottom="10dp"
                android:right="10dp"
                android:left="10dp"
                android:top="10dp"/>
        </shape>
    </item>

</selector>

还有一个标签是gradient,具有渐变的功能

<gradient android:startColor="@color/colorAccent"//开始的颜色
                android:endColor="@color/colorPrimary"//结束的颜色
                android:gradientRadius="50dp"/>

最后是使用,在Button的background标签里调用资源文件就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值