Android 自定义形状

1. selector的使用

selector是android中的一种选择器,用selector设置控件的背景,可以动态地更改控件的背景及形状(这里的动态指的是当该控件改变状态时能自动更改背景等),用selector的好处就是不需要在java代码中去处理这些背景的更换等。使用起来比较方便。

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

Color-Selector

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

基本的属性如下:

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"] />//是否窗口聚焦

使用:

(1)在res/color目录下新建一个 Color resource file 具体的代码编写如下:

fileName: color_selector.xml


(2)使用时只需要把对应控件的颜色属性设置为

例如需要一个按钮的文本在按下的时候有颜色变化,需要这样设置

.....

.....

android: textColor = "@color/color_selector"

/>

Drawable-Selector

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

基本的属性:

selector的属性

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: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"] />//所在窗口是否获取焦点

使用:

(1)在res/drawable目录下新建一个 Drawable file 具体的代码编写如下:

fileName: drawable_selector.xml

设置相关属性之后,使用时直接将控件的background设置为该资源文件就好

android: background:"@drawable/drawable_selector"









注意:

使用时,需要将默认的状态放在最后一项,不然的话,其他不起作用。

android: drawable:  "@color/c1"

android:state_pressed:"true"/>

android:drawable: "@color/c2"

/>

这样的话就可以在默认的情况下为c2,当触摸时变成颜色c1

如果把顺序倒过来的话是不行的,将没有效果

android: drawable: "@color/c2"/>

android:drawable:"@color/c1"

android:state_pressed:"true"/>


你可能感兴趣的:(Android 自定义形状)