引言

  1. selector中文意思就是选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换。使用十分方便。
  2. selector就是状态列表(StateList), 它分为两种,一种Color-Selector 和Drawable-Selector。

以上段落摘抄自这里


一.Color-Selector语法


    1.文件位置:


res/color/filename.xml //这个文件名就是资源ID。

2.资源类型:

这是一个ColorStateList资源文件。

     3.资源引用方式:


      在JAVA中:R.color.filename 

在XML中 :@[package:]color/filename


4.语法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http:///apk/res/android">
    <item
        android:color="color"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_window_focused=["true" | "false"]/>
</selector>

元素:

<selector>

必须的,必须作为根元素,包含一个或多个<item>元素


<item>

      为某个状态定义一个drawable,必须作为<selector>的子元素。


属性:

android:color:

    Color颜色值。#RGB,$ARGB,#RRGGBB,#AARRGGBB。


    android:state_pressed:

    Boolean是否触摸。‘true’触摸状态,'false'非触摸状态。


  android:state_focused:

    Boolean。是否或得焦点。‘true’聚焦状态,'false'非聚焦状态。


  android:state_selected:

Boolean。是否选中。'true'选中状态,'false'非选中状态。



  android:state_checkable:

    Boolean。是否可以被勾选,'true'可以,'false'不可以(PS:只能用在可以勾选的控件上)



  android:state_checked:

    Boolean。是否被勾选上,这里是设置默认状态。'true'默认勾选,'false'默认不勾选(PS:只能用在可以勾选的控件上)



  android:state_enabled:

Boolean。是否启用控件。'true'启用,'false'不启用。



  android:state_enabled:

Boolean。所在窗口是否获得焦点。'true'获得,'false'不获得。


二.Drawable-Selector

    1.文件位置:

res/color/filename.xml //这个文件名就是资源ID。

    2.资源类型:

       这是一个StateListDrawable资源文件。

    3.资源引用方式:

       在JAVA中:R.drawable.filename 

在XML中 :@[package:]drawable/filename

4.语法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http:///apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"]>
<item
    android:drawable="@[package:]drawable_resource"
    android:state_pressed=["true"|"false"]
    android:state_focused=["true"|"false"]
    android:state_hovered=["true"|"false"]
    android:state_selected=["true"|"false"]
    android:state_checkable=["true"|"false"]
    android:state_checked=["true"|"false"]
    android:state_enabled=["true"|"false"]
    android:state_activated=["true"|"false"]
    android:state_window_focused=["true"|"false"]/>
</selector>

属性:ps:与color-selector相同的属性作用相同

android:constantSize:

    Boolean"false"表示各个状态的大小(size)各自不同,true表示所有的状态大小相同(以最大的为准)。默认为false 。


android:dither:

    Boolean。"true"表示,如果一个屏幕中位图有这不同的像素配置,启用位图的抖动。"false"表示不启用位图的抖动。默认为true。据度娘:dither,抖动,是一种故意造成的噪音用以随机化量化误差,阻止大幅度拉升图像时导致的像banding(色带)这样的问题。




  android:variablePadding:

    Boolean"true"表示drawable的内边距会根据状态的变化而变化,设置为true时,你必须为不同的状态配置layout,但是通常不建议这么做。"false"表示内边距保持一致,所有状态中最大的内边距。默认为false



  android:hovered:

    Boolean。"true"表示光标移动到当前控件上的状态。默认为false


  android:activated:

    Boolean。"true"表示当前控件被激活的状态。


注:以上内容参考自:

Android Selector的使用

Android中selector的背景选择器

Android Drawable Resource学习

Android中selector的初步认识


:https://blog.51cto.com/tanbing/1741617