Selector使用

【Android -- Res资源】selector 的基本使用 实际应用中,很多地方比如 Button、Tab、ListItem 等都是不同状态有不同的展示形状。 阅读详情

Selector使用

Selector使其能够在不同的状态下更换某个View的背景图片。

<?xml version="1.0" encoding="utf-8" ?>     
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
  <!-- 触摸时并且当前窗口处于交互状态 -->    
  <item android:state_pressed="true" android:state_window_focused="true" android:drawable= "@drawable/pic1" />  
  <!--  触摸时并且没有获得焦点状态 -->    
  <item android:state_pressed="true" android:state_focused="false" android:drawable="@drawable/pic2" />    
  <!--选中时的图片背景-->    
  <item android:state_selected="true" android:drawable="@drawable/pic3" />     
  <!--获得焦点时的图片背景-->    
  <item android:state_focused="true" android:drawable="@drawable/pic4" />    
  <!-- 窗口没有处于交互时的背景图片 -->    
  <item android:drawable="@drawable/pic5" />   
</selector>

Selector最终会被Android框架解析成StateListDrawable类对象。

  1. StateListDrawable类介绍
    该类定义了不同状态值下与之对应的图片资源,即我们可以利用该类保存多种状态值,多种图片资源。
    方法:

    • public void addState (int[] stateSet, Drawable drawable)
      功能: 给特定的状态集合设置drawable图片资源

      //初始化一个空对象  
      StateListDrawable stalistDrawable = new StateListDrawable();  
      //获取对应的属性值 Android框架自带的属性 attr  
      int pressed = android.R.attr.state_pressed;  
      int window_focused = android.R.attr.state_window_focused;  
      int focused = android.R.attr.state_focused;  
      int selected = android.R.attr.state_selected;  
      
      stalistDrawable.addState(new int []{pressed , window_focused}, getResources().getDrawable(R.drawable.pic1));  
      stalistDrawable.addState(new int []{pressed , -focused}, getResources().getDrawable(R.drawable.pic2);  
      stalistDrawable.addState(new int []{selected }, getResources().getDrawable(R.drawable.pic3);  
      stalistDrawable.addState(new int []{focused }, getResources().getDrawable(R.drawable.pic4);  
      //没有任何状态时显示的图片,我们给它设置我空集合  
      stalistDrawable.addState(new int []{}, getResources().getDrawable(R.drawable.pic5);  
      上面的“-”负号表示对应的属性值为false
      当我们为某个View使用其作为背景色时,会根据状态进行背景图的转换。
    • public boolean isStateful ()
      功能: 表明该状态改变了,对应的drawable图片是否会改变。
      注:在StateListDrawable类中,该方法返回为true,显然状态改变后,我们的图片会跟着改变。
  2. GridView之Selector使用:
    GridView在点击每一个条目的时候黄色的背景,很难看,那么怎么才能让其不显示这个颜色呢?就是在GridView中将listSelector这个属性指定为透明的,
    这样再点击的时候就不显示黄色了,但是这样用户不知道自己点击了没有,所以要让它在点击的时候显示一个我们自定义的颜色

    <GridView
        android:listSelector="@android:color/transparent"//listSelector用于标示当前的条目被选择的时候的状态
        android:id="@+id/gv_home"
        android:verticalSpacing="10dip"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3" >
    </GridView>
    1. drawable目录新建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="@color/gray" /> <!-- 点击的时候显示的背景 -->
          <item android:state_focused="true"
                android:drawable="@color/gray" /> <!-- 获取焦点的时候显示的背景 -->
          <item android:state_hovered="true"
                android:drawable="@drawable/button_focused" /> <!-- hovered -->
          <item android:drawable="@android:color/transparent" /> <!-- 平常状态显示的颜色 -->
      </selector>

      这里android:drawable=”@color/gray”必须通过将颜色放到res下的color.xml中然后通过@color/gray这种方式指定而不能通过#000000这样直接写颜色,如果直接写颜色会报错

    2. 在控件中通过背景使用这个状态选择器
      对每个GridView的子条目设置相应的背景为改状态选择器

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:gravity="center_horizontal"
          android:background="@drawable/gv_item_selector"
          android:orientation="vertical" >
          <ImageView
              android:id="@+id/iv_home_item_icon"
              android:layout_width="60dip"
              android:layout_height="60dip"
              android:scaleType="fitXY"  //scaleType是指定图片的缩放类型, fitXY就是填充x和y轴
              android:src="@drawable/safe" />
          <TextView
              android:id="@+id/tv_home_item_name"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="手机防盗"
              android:textSize="18sp"
              android:textColor="#000000" />
      </LinearLayout>

  • 邮箱 :charon.chui@gmail.com
  • Good Luck!
【阅读文献笔记】FoundationStereo: Zero-Shot Stereo Matching 提出首个零样本泛化立体匹配基础模型设计 STA 模块融合单目先验提出 AHCF 模块增强代价滤波构建 100 万合成数据集 FSD + 自净化流程。 阅读详情

相关推荐

Fluent后台计算中Journal文件的自动化编写与优化实践

本文深入探讨了Fluent在Linux/Unix环境下进行后台计算时,Journal文件的自动化编写与优化实践。Journal文件作为Fluent后台计算的“灵魂”,是实现仿真流程自动化、保证计算可重复性与准确性的关键。文章从基础脚本骨架搭建、命令简写技巧,到进阶的参数化研究与批量计算实现,提供了详实的实战指南,帮助工程师大幅提升仿真效率。

postgres8guard的博客 759

Selector类的使用(一)

Selector类的使用 Selector类的主要作用是作为SelectableChannel对象的多路复用器。 可通过调用Selector类的open()方法创建选择器,该方法将使用系统的默认SelectorProvider创建新的选择器。也可通过调用自定义选择器提供者的openSelector()方法来创建选择器。在通过选择器的close()方法关闭选择器之前,选择器一直保持打开状态。 通过SelectionKey对象来表示SelectableChannel (可选择通道)到选择器的注册。选择器维护了

吴声子夜歌的博客 1642

银河麒麟V10离线安装VLC播放器:依赖处理与3.0.9.2版本实操指南

在国产化操作系统日益普及的背景下,软件安装方式成为政企内网用户关注的重点。离线安装作为一种不依赖公网源的部署手段,常用于解决内网环境下的软件获取问题。其核心在于理解Linux包管理机制,如dpkg与apt对依赖关系的处理逻辑。掌握这一原理,不仅能应对多媒体软件的部署,也能提升系统维护效率。VLC作为跨平台多媒体播放器,凭借强大的解码能力与协议支持,广泛应用于本地视频播放、RTSP拉流及监控大屏等场景。本文从离线安装的通用概念出发,结合银河麒麟V10桌面版的实际环境,详细梳理了VLC 3.0.9.2离线包的获

weixin_32247165的博客 376

Android中selector的使用

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

不悔的青春 6万+

Visual MODFLOW Flex 6.1新手入门:从数据导入到3D建模的完整工作流解析

本文为Visual MODFLOW Flex 6.1新手提供了从零开始构建地下水数值模型的完整工作流指南。详细解析了从项目规划、数据准备与导入,到构建三维概念模型、生成并运行数值模型,直至结果可视化与校准的核心步骤。帮助水文地质与环工领域初学者快速掌握这一专业软件,高效完成从数据到三维建模的全过程。

a1b2c的博客 810

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1265

Swift 如何使用Selector

Swift里面使用Selector

ccflying88的专栏 3638

【Flink】Flink提交任务到Yarn报错Unable to close file because the last blockBP enough number of replicas

当使用 HDFS 存储文件时,每个数据块会有多个副本分布在不同的节点上,以确保数据的可靠性和容错性。然而,由于某种原因,最后一个数据块 blk_1101776325_28036289 的副本数量不足,导致无法成功关闭文件。如果确定副本数量正确,并且问题仍然存在,可以尝试手动修复副本不足的情况。异常消息表明在关闭文件时出现问题,我的原因是hadoop上有个节点有问题,导致提交到那个节点的时候,无法传递包到相关的机器上。检查 HDFS 集群的状态,确保所有节点都正常工作,没有节点宕机或网络故障等问题。

九师兄 935

使用selector改变文字的颜色

有时候为了提高用户体验,我们希望有些文字按下去的时候改变颜色,这时候就要用到selector了。代码如下。 首先在drawable文件夹下定义一个selector文件:如下(我的应用场景是 相对布局中有一行文字,点击相对布局文字颜色改变,state选的是pressed ) 刚开始也以为定义好这个文件后,在布局文件中的Textview中直接引用就可以,但是没

kaka520169的专栏 1万+

手把手教你学 GPU KMD”相关内容的专栏简介与目录

本专栏系统讲解GPU内核模式驱动(KMD)开发技术,涵盖四大核心模块:1)GPU驱动架构基础,解析UMD/KMD协同机制;2)KMD核心功能,包括内存管理、命令提交、中断处理等;3)底层硬件交互,详解PCIe/DMA传输、多级页表等;4)实战进阶,结合Linux DRM框架代码分析,探讨GPU虚拟化与性能优化。面向具备OS和C语言基础的开发者,提供从理论到实践的完整学习路径,帮助深入理解图形/计算驱动栈的底层实现原理。

amy_mhd的博客 154

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

本篇文章我们将深入了解 Java 语言中的类与对象,探讨构造器、`static`、`final`、包和 JAR 文件。这些概念是面向对象编程的核心,对于理解和掌握 Java 至关重要。

栗筝i的博客 5039

Selector的使用

这里没有在 Scrapy 框架中运行,而是把 Scrapy中的Selector 单独拿出来使用了,构建的时候传入text 参数,就生成了一个Selector选择器对象,然后就可以像Scrapy中的解析方式一样,调用xpath、css等方法来提取数据了。由于Selector 主要是与Scrapy结合使用,如 Scrapy的回调函数中的参数response 直接调用 xpath或者 css 方法来提取数据,所以在这里我们借助 Scrapy shell 来模拟Scrapy 请求的过程,讲解相关的提取方法。

W_chuanqi的博客 3405

SAP ABAP 缓冲同步揭秘——从 DDLOG 表到 RSDBBUF3 的完整实践指南

DDLOG 看似一张不起眼的系统表,却承担着 SAP 多实例环境下的数据一致性重任。通过掌握其字段意义、解析方法及周边监控工具,你可以在性能与一致性之间找到最佳平衡;通过精细化的参数管理与主动刷新策略,更能在关键业务场景中确保“数据永远是最新的”。愿本文能成为你日常排障与架构决策的参考手册。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 315

Android:selector使用

Hello everyone!我是小小白,今天又来和大家分享干货了!先上效果图: 内容如下:selector 另外赠送一个简单的点击事件!(啊哈哈,看一送一,划算!) 仔细看按钮2 你能发现它不是正方形。哎!废话,这就是今天的成品!我们一起冷静分析一下,需要我们干什么! 我们只需要自己写个样式就可以了。 首先,在左侧找到drawable文件,右击 ->new -> Drawable ...

paokuhuashang的博客 372

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

swift中 Selector的使用

Selector 源自 Objective-C,例如 SEL 类型,以及 @selector() 方法选择器。 let btn = UIButton.init(type:.custom) btn.frame = CGRect.init(x: 40, y: 50, width: 40, height: 40); btn.backgroundCol...

weixin_34067102的博客 1088

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JAVA NIO学习之Selector的使用

selector使用步骤: selector的创建 Selector selector = Selector.open(); 向selector注册通道 channel.configureBlocking(false); SelectionKey key = channel.register(selector,SelectionKey.OP_READ); 与selector一起使用时,...

LeakCollector的博客 392

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

selector的使用

Selector的应用场景 1:为Button和ListView每项设置selector Button的常用Selector 1、Button,比如按下时有不同的背景色: 上面的item也可以换成另一种写法: 为Button加入android:background="@drawable/xml文件名" ListView的常用Selecto

lollipop的专栏 587

matlab simulink中selector的使用

1、selector简介 2、用途 1)多选一; 2)多选多; 3)调整输入信号顺序; 3、使用方法 如图例子: 加入三个常量分别为1,2,3 使用mux集总三路信号; 输入selector,设置selector Number of input dimensions:1(输入的向量) Index mode : One-based 信号序号从1开始 Index option:index vector (dialog) Index [1 3 2] 调换2和3的顺序 ,如果只要一个信号如第一个,可以设置in

EricHai的博客 1万+

Android Selector 的使用

Selector 和 Shape 相似,是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector > ,例如:我们只需要将Button的 background 属性设置为该drawable资源即可轻松实现,按下 按钮时不同的按钮颜色或背景。

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 1269

android代码selector,Android之Selector与Shape的使用

Selector:在开发过程中,通常我们需要给控件增加点击的效果,效果如下:默认效果 点击效果 1、首先准备两张图片(默认和点击时的图片)2、右击res文件夹,新建一个xml文件,在弹出的对话框中,Resource Type 选择Drawable,Root Element选择Selector,填入文件名(如:pressed_selector),点击完成,这时会...

weixin_42593130的博客 344

Selector选择器概述||Selector选择器组合使用

Selector选择器组合使用

qq_39368007的博客 568

Java Nio中Selector是什么?Selector怎么使用呢?

以前大家都是用阻塞式IO来对网络IO进行数据请求,对于不同的IO都要分配一个线程来处理,如果没有数据就会进行等待,从而造成了阻塞,这种方式极大地浪费了资源(如图1)。于是,有人就提出了一个想法,使用一个线程去监控多个IO请求,如果哪一个IO数据准备完毕后就通知相应的线程来处理,这就是selector模型(如图2)。而Java中的selector就是对selector模型的一种实现,用于询问选择已就绪的IO处理任务。 Selector的几个核心的概念 Channel(通道):用于进行网...

weixin_42374229的博客 712

NIO之Selector的使用

Selector的使用

z318913的博客 1100

Selector里面使用shape

开始之前我们必须说清楚selector和shape干什么用的。 selector(选择器):当我们点击一个按钮的时候,要显示的是点击后的背景或者点击时的背景,这个时候的不同的状态需要显示不同的背景,就需要selector来选择对应的背景。 shape(图形):显示比较规则的图形,作为按钮的背景,详细了解可以看上一片博客Android中shape的使用通常我们使用selector的时候,里面会设置

qq_30053399的博客 1858

Java NIO中的Selector使用方法

Java NIO中的Selector是一个可以检查一个或多个实例是否准备好进行I/O操作的对象。使用Selector可以让你用一个线程来管理多个Channel,从而提高应用程序的效率。

wuhao2343的博客 1469
上一篇: ScrollingTabs
下一篇: TextView跑马灯效果
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值