一、selector介绍:
存放位置:res/drawable/文件的名称.xml
1 使用场景:控件不同状态显示不同的样式,这时候就用到selector
2 item: 每个item表示一种状态(可以几种状态叠加使用)
3 匹配规则:第一个匹配的状态将会使用,如果第一个没有任何状态则会一直加载第一个,所以默认状态要放到最后
4 几种常见状态说明
1)android:state_pressed : boolean。“true”表示按下状态使用(例如按钮按下);“false”表示非按下状态使用。 2)android:state_focusedboolean。“true”表示聚焦状态使用(例如使用滚动球/d-pad聚焦button);“false”表示非聚焦状态使用。 3)android:state_selected : boolean。“true”表示选中状态使用(例如tab打开);“false”表示非选中状态使用。 4) boolean。“true”表示可勾选状态时使用;“false”表示非可勾选状态使用。(只对能切换可勾选—非可勾选的构件有用。) 5) boolean。“true”表示勾选状态使用;“false”表示非勾选状态使用。 6) boolean。“true”表示可用状态使用(能接收触摸/点击事件);“false”表示不可用状态使用。 7) android:window_focused boolean。“true”表示应用程序窗口有焦点时使用(应用程序在前台);“false”表示无焦点时使用(例如notification栏拉下或对话框显示)。
二、例子: 1)listView状态改变 2)button状态改变
1、 listView 中加载方法 android:listSelector="@drawable/list_item_bg"
或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg);
list_item_bg.xml 代码,按照上面的添加上样式即可
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 没有焦点时的背景图片--> <item android:state_window_focused="false" android:drawable="@color/red" /> <!-- 非触摸模式下获得焦点并单击时的背景图片--> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/blue" /> <!-- 触摸模式下单击时的背景图片--> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/green" /> <!--选中时的图片背景--> <item android:state_selected="true" android:drawable="@color/pink" /> <!--获得焦点时的图片背景--> <item android:state_focused="true" android:drawable="@color/black" /> <!-- 默认时的背景图片android:drawable可以是图片也可以是颜色 --> <item android:drawable="@color/white"/> </selector>
2、按钮的selector
1)普通的样式即不同的状态给予不同的,简单的背景样式
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@color/red" /> <item android:state_focused="true" android:drawable="@color/green" /> <item android:state_pressed="true" android:drawable="@color/blue" /> <item android:drawable="@color/pink" /> </selector>
2)不同的状态item下,添加自定义的shape背景样式,(添加渐变、描边、填充色,圆角处理,padding距离处理等),自定义的shap在下面会具体的学习
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <!-- 定义当button 处于pressed 状态时的形态。--> <shape> <gradient android:startColor="#8600ff" /> <stroke android:width="2dp" android:color="#000000" /> <corners android:radius="5dp" /> <padding android:left="10dp" android:top="10dp" android:bottom="10dp" android:right="10dp" /> </shape> </item> <item android:state_focused="true"> <!-- 定义当button获得focus时的形态--> <shape> <gradient android:startColor="#eac100" /> <stroke android:width="2dp" android:color="#333333" /> <corners android:radius="8dp" /> <padding android:left="10dp" android:top="10dp" android:bottom="10dp" android:right="10dp" /> </shape> </item> <item> <shape> <solid android:color="@color/white"/> <stroke android:width="2dp" android:color="@color/pink" /> <corners android:topRightRadius="5dp" android:bottomLeftRadius="5dp" android:topLeftRadius="0dp" android:bottomRightRadius="0dp" /> </shape> </item> </selector>
三、Shape的使用
简介
作用:XML中定义的几何形状
位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background="@drawable/文件的名称"
属性:
<shape> Android:shape=["rectangle" | "oval" | "line" | "ring"]
其中rectagle矩形,oval椭圆,line水平直线,ring环形
<shape>中子节点的常用属性:
<gradient> 渐变
Android:startColor
起始颜色
Android:endColor
结束颜色
Android:angle
渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;
Android:type
渐变的样式 liner线性渐变 radial环形渐变 sweep
<solid > 填充
Android:color
填充的颜色
<stroke >描边
Android:width
描边的宽度
Android:color
描边的颜色
Android:dashWidth
表示'-'横线的宽度
Android:dashGap
表示'-'横线之间的距离
<corners >圆角
Android:radius
圆角的半径 值越大角越圆
Android:topRightRadius
右上圆角半径
Android:bottomLeftRadius
右下圆角角半径
Android:topLeftRadius
左上圆角半径
Android:bottomRightRadius
左下圆角半径
<padding >填充
android:bottom="1.0dip"
底部填充
android:left="1.0dip"
左边填充
android:right="1.0dip"
右边填充
android:top="0.0dip"
上面填充
相关推荐
综上所述,Android背景选择器Selector提供了丰富的视觉反馈,可以根据视图的不同状态改变其外观。通过巧妙地使用Selector,开发者可以提升应用程序的用户体验,使用户能直观地感知交互状态。无论是按钮、列表项还是...
### 浅谈Android的Selector背景选择器 #### 一、引言 在Android开发中,为了提高用户体验,经常需要对控件的外观进行定制化处理,特别是在不同的交互状态下展示不同的视觉效果。`Selector`作为Android中一个非常...
在Button中,我们主要用到两种Selector:一种是background selector(背景选择器),用于改变按钮的背景颜色或图片;另一种是text_color selector(文本颜色选择器),用于改变按钮的文字颜色。 2. **背景选择器...
本篇文章将深入探讨Android中的Selector背景选择器的使用方法。 首先,让我们了解Selector的基本结构。Selector是XML文件,通常存储在项目的res/drawable目录下。以下是一个简单的Selector示例: ```xml <selector...
在Android开发中,选择器(Selector)是一种非常重要的机制,用于定义View在不同状态下的显示样式,如按下、聚焦、默认等。`android selector注入器` 提供了一种高效且便捷的方式来管理这些状态选择器,使得开发者...
总的来说,“带有背景选择器的GridView”是一个实用的UI设计,通过合理利用Android的背景选择器特性,我们可以为用户提供更直观的交互反馈,提升应用的用户体验。通过阅读和分析提供的“带有背景选择器的GridView”...
然后,我们可以在TextView或其他文本元素中引用这个选择器,像这样设置`android:textColor`属性: ```xml android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击我" ...
在这个"Android selector"主题中,我们将深入探讨如何创建并使用状态选择器来控制按钮(Button)和文字的样式变化。 首先,一个状态选择器通常是一个XML文件,存储在res/drawable目录下。例如,我们可以创建一个名...
这就是`selector`选择器的作用,它可以帮助我们在不同状态下切换图片,并保持住相应的状态。现在,我们将详细探讨如何在ListView、Button和ImageView中应用selector来实现这一功能。 首先,让我们了解什么是`...
本文实例讲述了Android编程中selector背景选择器用法。分享给大家供大家参考,具体如下: 在Android开发过程中,经常对某一View的背景在不同的状态下,设置不同的背景,增强用户体验。如果按钮,在按下时,背景变化...
在Android开发中,选择器(Selector)是一种强大的工具,它允许开发者根据组件的状态改变其外观。在本场景中,我们讨论的是一个特定的实现:使用RadioGroup来创建一个具有下划线选中效果的选择器。RadioGroup是...
Android selector状态选择器的使用详解 Android selector状态选择器是Android应用程序中常用的UI组件,它可以根据不同的状态来改变控件的外观和行为。例如,在一个按钮控件中,selector可以根据按钮的状态(如点击...
在Android开发中,Selector是用于定义视图状态变化时外观的一种资源,它可以是颜色、图像或者形状等。本文将深入探讨如何使用Selector来修改TextView的字体颜色和背景颜色。 首先,我们来创建两个XML文件,分别用于...
Selector在Android中是一种基于状态的选择器,它可以为不同状态下的View定义不同的样式。它允许开发者根据View的状态(如按下、聚焦、选中、默认等)来改变其背景或颜色。以下我们将详细探讨如何创建一个Selector来...
在Android开发中,选择器(Selector)是一种非常重要的机制,它允许我们根据不同的状态改变UI元素的外观。本文将深入探讨Android选择器的应用,并通过一个实际的项目案例来阐述其工作原理和使用方法。 Android中的...
在Android开发中,选择器(Selector)是一种非常重要的组件,它允许我们为UI元素定义不同状态下的视觉表现。本文将深入探讨Android选择器及其在实际应用中的使用。 Android选择器通常是一个XML文件,位于res/...
在Android开发中,选择器(Selector)是一种非常重要的资源类型,它允许我们为UI组件(如按钮或RadioButton)定义不同的状态,并在用户交互时改变组件的外观。本篇将深入探讨如何通过XML来定制Android的Selector,...