Android中selector的使用

引言

selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换。使用十分方便。

selector的定义

selector就是状态列表(StateList), 它分为两种,一种Color-Selector 和Drawable-Selector。

Color-Selector

color-selector 就是颜色状态列表,可以跟color一样使用,颜色会随着组件的状态而改变。文件的位置存储于

/res/color/filename.xml

在Java中使用是: R.color.filename

在XML中使用是: @[package]color/filename

语法

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:color="hex_color"               //颜色值,#RGB,$ARGB,#RRGGBB,#AARRGGBB
    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>

示例

在/res/color/文件夹下新建test_color_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
</selector>

调用:

<Button
        android:id="@+id/bt_about"
        style="@style/Button_style"
        android:layout_width="250dp"
        android:layout_height="50dp"
        android:layout_margin="5dp"
        android:textColor="@color/test_color_selector"
        android:text="@string/about" />

  

Drawable-Selector

drawable-selector 是背景图状态列表,可以跟图片一样使用,背景会根据组件的状态变化而变化。文件存储于

/res/drawable/filename.xml

Java中调用: R.drawable.filename

XML中调用:@[package:]drawable/filename

语法

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:constantSize=["true" | "false"]//drawable的大小是否当中状态变化,true表示是变化,false表示不变换,默认为false
  android:dither=["true" | "false"]//当位图与屏幕的像素配置不一样时(例如,一个ARGB为8888的位图与RGB为555的屏幕)会自行递色(dither)。设置为false时不可递色。默认true
  android:variablePadding=["true" | "false"] >//内边距是否变化,默认false
  <item
    android:drawable="@[package:]drawable/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>

  

示例

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/button_bg_press" />
    <item android:state_focused="true" android:drawable="@drawable/button_bg_press" />
    <item android:state_pressed="true" android:drawable="@drawable/button_bg_press"  />
    <item android:drawable="@drawable/button_bg_normol"  />
</selector>

  调用:

<Button
        android:id="@+id/bt_about"
        style="@style/Button_style"
        android:background="@drawable/button_selector"
        android:layout_width="250dp"
        android:layout_height="50dp"
        android:layout_margin="5dp"
        android:textColor="@color/test_color_selector"
        android:text="@string/about" />

  

总结

selector是一种很好的方式,实现View状态变化后背景与颜色变化的,可以省去很多逻辑代码,掌握了之后既可以省去很多Java代码,还能写一些漂亮的UI。

原文 http://blog.csdn.net/wenwen091100304/article/details/49667293

时间: 2024-08-24 13:24:49

Android中selector的使用的相关文章

【转】 Android中selector的使用

引言 selector中文的意思选择器,在Android中常常用来作组件的背景,这样做的好处是省去了用代码控制实现组件在不同状态下不同的背景颜色或图片的变换.使用十分方便. selector的定义 selector就是状态列表(StateList), 它分为两种,一种Color-Selector 和Drawable-Selector. Color-Selector color-selector 就是颜色状态列表,可以跟color一样使用,颜色会随着组件的状态而改变.文件的位置存储于 /res/c

Android中的Selector的使用总结

Android中的Selector主要是用来改变ListView和Button控件等其他空的默认背景,其使用方法可以如下所示: 1.首先在res目录下drawable文件夹,新建一个comm_button_bg.xml的xml文件. 2.编辑comm_button_bg.xml文件,其代码结构如下所示: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http

android中的selector背景选择器的用法

关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法. 首先android的selector是在drawable/xxx.xml中配置的. 先看一下listview中的状态: 把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片. drawable/list_item_bg.xml <?x

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

【转】Android中设置TextView的颜色setTextColor

原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setTextColor,这个方法被重载了,可以传入两种参数. public void setTextColor(int color) { mTextColor = ColorStateList.valueOf(color); updateTextColors(); } public void setTextCo

android中图型的阴影效果(shadow-effect-with-custom-shapes)

思路: 在自定义shape中增加一层或多层,并错开,即可显示阴影效果.为增加立体感,按钮按下的时候,只设置一层.我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小. 关系图 以下自定义两种阴影效果: res/drawable-hdpi/shadow1.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http:

Android中的五大布局

一.布局介绍 在Android中,共有五种布局方式,分别是: FrameLayout(框架布局) LinearLayout(线性布局) AbsoluteLayout(绝对布局) RelativeLayout(相对布局) TableLayout(表格布局) 1. FrameLayout框架布局 布局特点:放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素 应用场景:适合浏览单张图片. 2. LinearLayout线性布局 布局特点:

Android中Fragment和ViewPager那点事儿

在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragment与Activity之间的交互(两种实现方式)>中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式. 那如果将他们两结合起来,会不会擦出点火花呢,答案是肯定的.之前在介绍ViewPager时,我们实现了多个ImageView的切换,并配合更新导航原点的状态.那我们现在

Android中项目中各个文件夹的含义和用途详解

1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片.音乐.字体等. 4.res:可以存放项目中所有的资源文件,例如:图片(*.png.*.jpg).文本等. 5.res/drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型. 6.res/drawable-ldpi:保存低分辩率图