温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android之Selector与Shape的使用

发布时间:2020-07-28 16:55:57 来源:网络 阅读:626 作者:joyy001 栏目:移动开发

Selector:

在开发过程中,通常我们需要给控件增加点击的效果,效果如下:

    默认效果                  点击效果

Android之Selector与Shape的使用   Android之Selector与Shape的使用


1、首先准备两张图片(默认和点击时的图片)

2、右击res文件夹,新建一个xml文件,在弹出的对话框中,Resource Type 选择Drawable,Root Element选择Selector,填入文件名(如:pressed_selector),点击完成,这时会在res文件夹中生成一个drawable文件夹存放我们创建的xml文件

3、xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item 
        android:state_pressed="true"  //点击状态
        android:drawable="@drawable/ic_pressed"></item> //点击状态的图片
    <item android:drawable="@drawable/ic_normal"></item> //没有设置状态则为默认图片

</selector>


4、之后再布局文件中,在我们要增加点击效果的控件设置如下属性,运行后该控件就有点击效果了

android:background="@drawable/pressed_selector"

5、当然,出了设置点击时的效果,还可以设置选中状态、聚焦状态等等效果

       只要设置相应 android:state_xxx 属性即可



Shape:

除了给控件设置点击效果,我们还可以在控件的外观上给予美化,比如设置圆角、边框等,这时候就要用到shape了,跟selector一样创建一个xml文件,Root Element选择Shape,就会生成shape xml文件,各种属性参考下面代码

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

    <!-- 设置圆角 可用radius设置4个方向的圆角,也可分别单独设置4个圆角-->
    <corners 
        android:radius="2dp"
        android:topLeftRadius="2dp"
        android:topRightRadius="2dp"
        android:bottomLeftRadius="2dp"
        android:bottomRightRadius="2dp" />

    <!-- 描边,即边框,默认是实线;dashWidth、dashGap两个属性设置虚线 -->
    <stroke
        android:width="2dp"
        android:color="#dcdcdc" 
        android:dashWidth="2dp"
        android:dashGap="3dp"/>

    <!-- 实心,即填充的颜色 -->
    <solid android:color="#ffffff" />
    
    <!-- 渐变 -->
    <gradient
        android:angle="200"
        android:endColor="#00ff00"
        android:startColor="#ffffff" />
    
    <!-- 间隔 -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

同样是给控件设置background属性即可引入shape效果

android:background="@drawable/shape"



Selector与Shape结合使用:

如果我们要给控件同时设置点击效果和shape效果,只需要把shape的代码移植到selector中即可,代码如下:

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

    <!-- 分别设置点击时和默认状态的shape -->
    <item android:state_pressed="true">
        <shape>
            <corners android:radius="20dp" />
            <solid android:color="#e0e0e0" />
        </shape>
    </item>
        
        
    <item>
        <shape>
            <corners android:radius="20dp" />
            <solid android:color="#ffffff" />
        </shape>
    </item>

</selector>


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI