Androidselector的实例详解

Androidselector的实例详解,第1张

概述Android selector的详解前言:StateListDrawable是一种通过XML文件来定义的drawable,使用几个不同的图片来呈现同一个图形,通过object的状态来实现切换。例如,一个Button有几个不同的状态(按压,获取焦点等

AndroID  selector的详解

前言:

StateListDrawable 是一种通过XML文件来定义的drawable,使用几个不同的图片来呈现同一个图形,通过object的状态来实现切换。例如,一个button有几个不同的状态(按压,获取焦点等等),这种情况下,通过使用 state List drawable,你就可以实现在不同的状态下使用不同的背景图片。

你可以在一个XML文件中描述state List。通过在根节点selector下定义一个item元素来添加每个图形。每一各item中使用不同的状态属性来定义不用的drawable。

当每一次状态改变的时候,state List都会从上到下被遍历一遍,第一个与当前state相匹配的item将会被使用―- 这个选择并不是作出“最匹配”结果,而是简单的找到第一个匹配的状态。

selector一般都是用来作为有状态改变的VIEw的背景,以此来达到当用户对VIEw进行 *** 作,导致VIEw状态改变时,作出改变,让用户感知VIEw的状态变化。

官方说明

文件位置:res/drawable/filename.xml

编译资源类型:StateListDrawable

资源引用:

In Java: R.drawable.filename
In 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"]  androID:dither=["true" | "false"]  androID:variablepadding=["true" | "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>

更多详细说明,请查阅xsoftlab

实际使用

下面做一个简单的实例,对button的背景根据状态做一下处理

XML文件

selector_ts.xml

<?xml version="1.0" enCoding="utf-8"?><selector xmlns:androID="http://schemas.androID.com/apk/res/androID">  <item androID:drawable="@color/pink" androID:state_pressed="true" />  <item androID:drawable="@color/yellow" androID:state_selected="true" />  <item androID:drawable="@drawable/shaperect" androID:state_enabled="false" />  <item androID:drawable="@color/stone" androID:state_enabled="true" /></selector>

主布局文件(activity_main.xml)

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  xmlns:tools="http://schemas.androID.com/tools"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:focusable="true"  androID:focusableIntouchMode="true"  androID:orIEntation="vertical"  androID:padding="10dp"  tools:context="mraz.com.tabdemo.MainActivity">  <button    androID:ID="@+ID/bt_content"    androID:layout_wIDth="match_parent"    androID:layout_height="300dp"    androID:background="@drawable/selector_ts" />  <linearLayout    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:layout_margintop="50dp"    androID:orIEntation="horizontal">    <button      androID:ID="@+ID/bt_selected"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_weight="1"      androID:text="Select"      androID:textAllCaps="false" />    <button      androID:ID="@+ID/bt_disable"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_weight="1"      androID:text="disable"      androID:textAllCaps="false" />    <button      androID:ID="@+ID/bt_pressed"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_weight="1"      androID:text="Press"      androID:textAllCaps="false" />  </linearLayout></linearLayout>

代码部分 比较简单,这里就不占用过多的篇幅了,看下简单的效果,大家应该就知道如何编写小小的Activity了。

实际效果

如有疑问请留言或者到本站社区交流讨论,本站关于AndroID 开发的文章还有很多,欢迎大家搜索查阅,谢谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android selector的实例详解全部内容,希望文章能够帮你解决Android selector的实例详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1144711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存