android 笔记:afinal框架和selector用法总结
Androidselector状态选择器的使用详解
Androidselector状态选择器的使⽤详解⼀、⽬的效果越好的⽤户体验来源更直接更明显的事件反馈。
selector可以“预存”多种响应的反馈,主要以下多种状态有:android:state_selected是选中android:state_focused是获得焦点android:state_pressed是点击android:state_enabled是设置是否响应事件,指所有事件设置不同状态的表现形式,则会在不同场景下有不同状态。
如⽂字:被选中状态,未被选中状态。
selector的普通使⽤则是为对应单个控件添加以selector为背景的资源,则能达到⽬的。
联合使⽤则是基本使⽤⼀种升级。
在我们的导航栏中,常使⽤LinearLayout或者RelativeLayout包含⼀个ImageView和⼀个TextView。
图⽚⽤于直观观感,⽂字⽤于更清晰的描述。
在⼀个整体菜单被选中时,需要图⽚及⽂字都表现对应的状态。
并为保证较⼤的事件响应范围,点击事件常赋予包含图⽚和⽂字的⽗控件。
即:为LinearLayout设置点击事件,ImageView、TextView表现对应的状态。
⼆、具体实现⽂字的selector:res添加⽬录color,res/color/bg_tv_selector.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:color="@color/red" android:state_pressed="true" /><item android:color="@color/black" /></selector>图⽚的selector:bg_qq_iv_selector.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@mipmap/b_qq_pressed" android:state_pressed="true" /><item android:drawable="@mipmap/b_qq" /></selector>使⽤shape为Button的背景图,并设置selector:bg_bt_drawable_normal.xml:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"><corners android:radius="10dp" /><strokeandroid:width="2dp"android:color="@color/black" /></shape>bg_bt_drawable_pressed.xml:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"><corners android:radius="5dp" /><strokeandroid:width="2dp"android:color="@color/blue"android:dashGap="10dp" /><gradientandroid:centerColor="@color/red"android:endColor="@color/green" /></shape>bg_bt_selector.xml:<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@drawable/bg_bt_drawable_pressed" android:state_pressed="true" /><item android:drawable="@drawable/bg_bt_drawable_normal" />activity_main.xml中使⽤:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.future.selectorlldemo.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><LinearLayoutandroid:id="@+id/qq_ll"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/green"android:clickable="true"android:gravity="center"android:orientation="vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/bg_qq_iv_selector" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="QQ"android:textColor="@color/bg_tv_selector" /></LinearLayout><LinearLayoutandroid:id="@+id/weixin_ll"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@color/blue"android:clickable="true"android:gravity="center"android:orientation="vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/bg_weixin_iv_selector" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="WeChat"android:textColor="@color/bg_tv_selector" /></LinearLayout></LinearLayout><LinearLayoutandroid:id="@+id/text_button_ll"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="⽂字和Button"android:textColor="@color/bg_tv_selector" />android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@drawable/bg_bt_selector"android:clickable="false"android:text="确认" /></LinearLayout></LinearLayout>MainActivity.Java中应⽤效果:public class MainActivity extends AppCompatActivity implements View.OnClickListener {/*** qq登录按钮*/private LinearLayout qqLoginLL;/*** 微信登录按钮*/private LinearLayout weixinLoginLL;/*** ⽂字和Button⼀起*/private LinearLayout textButtonLL;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);qqLoginLL = (LinearLayout) findViewById(R.id.qq_ll);weixinLoginLL = (LinearLayout) findViewById(R.id.weixin_ll);textButtonLL = (LinearLayout) findViewById(R.id.text_button_ll);qqLoginLL.setOnClickListener(this);weixinLoginLL.setOnClickListener(this);textButtonLL.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.qq_ll:Toast.makeText(MainActivity.this, "你点击了QQ登录区间", Toast.LENGTH_SHORT).show();break;case R.id.weixin_ll:Toast.makeText(MainActivity.this, "你点击了WeChat登录区间", Toast.LENGTH_SHORT).show(); break;case R.id.text_button_ll:Toast.makeText(MainActivity.this, "你点击了Text_Button区间", Toast.LENGTH_SHORT).show(); break;}}}展⽰效果:三、注意细节1.默认状态放在selector的最后<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@mipmap/b_qq" /><item android:drawable="@mipmap/b_qq_pressed" android:state_pressed="true" /></selector>不能实现对应效果2.TextView selector需要放置在 res/corlor⽬录下以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
android presenterselector用法
android presenterselector用法[android presenterselector用法]PresenterSelector是Android中的一个类,用于根据不同的条件选择合适的Presenter来展示数据。
在Android中,我们经常需要根据不同的数据类型来展示不同的UI风格,比如在一个列表中同时展示文字、图片、视频等内容。
PresenterSelector就是为了帮助我们实现这样的需求而存在的。
接下来,我将一步一步详细回答这个主题,让我们一起来深入了解PresenterSelector的用法。
第一步:导入PresenterSelector类首先,我们需要在我们的Android项目中导入PresenterSelector类。
在项目的build.gradle文件中添加如下依赖项:implementation 'androidx.leanback:leanback:1.0.0'然后,同步一下项目,确保PresenterSelector类已经被成功导入。
第二步:创建Presenter类接下来,我们需要创建一些继承自Presenter类的Presenter子类,用于展示不同类型的数据。
比如,我们可以创建一个TextPresenter类来展示文本数据,再创建一个ImagePresenter类来展示图片数据。
这些Presenter类需要实现一个createViewHolder()方法,用于创建对应类型的ViewHolder。
例如,TextPresenter类的代码如下:javapublic class TextPresenter extends Presenter {Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent) { LayoutInflater inflater =LayoutInflater.from(parent.getContext());View view = inflater.inflate(yout.text_layout, parent, false);return new TextViewHolder(view);}Overridepublic void onBindViewHolder(ViewHolder viewHolder, Object item) {String text = (String) item;TextViewHolder textViewHolder = (TextViewHolder) viewHolder;textViewHolder.textView.setText(text);Overridepublic void onUnbindViewHolder(ViewHolder viewHolder) { Clean up resources if needed}private static class TextViewHolder extendsPresenter.ViewHolder {TextView textView;TextViewHolder(View itemView) {super(itemView);textView = itemView.findViewById(R.id.text);}}}在TextPresenter中,我们首先在createViewHolder()方法中创建一个ViewHolder对象,并加载对应的布局文件。
android背景选择器selector的2种用法
bg.addState(View.PRESSED_ENABLED_STATE_SET, selected);
bg.addState(View.ENABLED_STATE_SET, normal);
bg.addState(View.FOCUSED_STATE_SET, selected);
// TODO Auto-generated method stub
Toast.makeText(myActivity.this, "It is ok!", Toast.LENGTH_SHORT).show();
}
});
}
class MyButton extends View
{
public MyButton(Context context)
{
super(context);
}
// 以下这个方法也可以把你的图片数组传过来,以StateListDrawable来设置图片状态,来表现button的各中状态。未选
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片 -->
<item android:state_window_focused="false" android:drawable="@drawable/pic1" />
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" />
android materialcardview selector用法
Android MaterialCardView Selector用法1. MaterialCardView简介MaterialCardView是Android Material Design库中的一个小部件,用于呈现卡片样式的界面和内容。
它是CardView的扩展,提供了更多的样式和功能。
MaterialCardView可以应用布局文件中的样式和选择器来达到视觉上的效果。
2. 选择器选择器是一种在不同状态下为视图提供不同样式的机制。
在Android中,选择器用于定义在不同状态(例如:悬停、按下等)下,视图的外观效果。
MaterialCardView选择器允许您定义不同状态下的颜色、状态和样式。
以下是MaterialCardView中可用的选择器状态:•android:state_checked:表示MaterialCardView处于选中状态•android:state_hovered:表示MaterialCardView处于悬停状态•android:state_activated:表示MaterialCardView处于激活状态•android:state_pressed:表示MaterialCardView处于按下状态•android:state_focused:表示MaterialCardView处于获取焦点状态•android:state_enabled:表示MaterialCardView处于可用状态•android:state_window_focused:表示MaterialCardView所在窗口处于获取焦点状态•android:state_accelerated:表示MaterialCardView正在以加速度运动3. 使用MaterialCardView选择器要在MaterialCardView中使用选择器,您需要创建一个XML文件来定义不同状态下的样式。
例如,您可以创建一个名为card_view_selector.xml的文件,如下所示:<selector xmlns:android=""><item android:drawable="@drawable/card_background_hovered" android:state_h overed="true"/><item android:drawable="@drawable/card_background_pressed" android:state_p ressed="true"/><item android:drawable="@drawable/card_background_normal"/></selector>在上面的代码中,我们定义了三个不同的样式。
css_selector用法
css_selector用法什么是CSS选择器?CSS选择器是一种用于选择HTML元素以进行样式化的模式。
它们基于特定的规则和语法,允许开发者根据元素的属性、层级关系以及其他条件来选择并应用样式。
使用CSS选择器可以有效地控制页面中的元素,改善用户界面的外观和体验。
为什么我们需要使用CSS选择器?在网页开发中,元素选择是一项重要的任务。
通过选择器,我们可以为特定的HTML元素或一组元素应用样式。
这样,我们可以确保页面的各个部分具有一致的外观和风格,使页面更加易读、易用和美观。
使用CSS选择器还可以减少重复代码的使用,提高代码的可维护性。
下面我们来逐步学习CSS选择器的用法:1. 元素选择器(Element Selector):这是最基本的选择器,通过选择HTML元素的标签名称来应用样式。
例如,如果要为所有段落(<p>标签)设置样式,可以使用选择器"p"。
2. ID选择器(ID Selector):通过HTML标签上的唯一ID属性来选择元素。
使用选择器"#"后跟ID 值来选择元素。
例如,要选择一个具有ID为"header"的元素,可以使用选择器"#header"。
3. 类选择器(Class Selector):通过HTML标签上的class属性来选择元素。
使用选择器"."后跟class 名称来选择元素。
例如,要选择class为"button"的元素,可以使用选择器".button"。
4. 属性选择器(Attribute Selector):通过HTML元素的属性来选择元素。
使用属性名或属性名加属性值的组合来选择元素。
例如,要选择所有具有属性"title"的链接元素,可以使用选择器"a[title]"。
5. 后代选择器(Descendant Selector):通过元素的层级关系来选择元素。
5分钟让你掌握Android的selector用法
5分钟让你掌握Android的selector用法为了更好的学习和工作,动动小手收藏起来吧!selector的定义selector就是状态列表(StateList),它分为两种,一种Color-Selector 和Drawable-Selector。
1、Color-Selectorcolor-selector 就是颜色状态列表,可以跟color一样使用,颜色会随着组件的状态而改变。
文件的位置存储于/res/color/文件名.xml在Java中使用是:R.color.filename在XML中使用是:@[package]color/filename基本语法<?xml version="1.0" encoding="utf-8"?><selectorxmlns:android="/apk/res/android" ><itemandroid:color="hex_color" //颜色值,#RGB,$ARGB,#RRGGBB,#AARRGGBBandroid: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/文件夹下新建color_selector.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/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>调用:<Buttonandroid:id="@+id/btnsave"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dp"android:layout_below="@+id/top_relative"android:textColor="@color/color_selector"android:text="aikaifa" />效果:按下注意字体颜色的变化2、Drawable-Selectordrawable-selector 是背景图状态列表,可以跟图片一样使用,背景会根据组件的状态变化而变化。
selector的用法
selector的⽤法
selector选择器,可以根据控件不同的状态切换不同的背景
第⼀步:
<selector xmlns:android="/apk/res/android">
<item android:state_enabled="false" 这是控件的状态值,
android:drawable="@color/teal_200"/ 当控件的状态值enable为false时显⽰的背景颜⾊
>
<item android:state_enabled="true"
android:drawable="@color/lightGray"/> 最后⼀个为控件的默认状态
</selector>
第⼆步:
将selector添加到背景上,并确定控件的默认状态值
android:background="@drawable/select_first_button"
android:enabled="true"
注意:
在selector中有⼀个坑,控件根据selector来匹配状态值是从上到下匹配的,当⽬前的状态值与当前状态值⼀样时就不会在往下匹配了,⽐如若我的enabled = "false" 那么当控件匹配selector时与第⼀个状态值false匹配相同了,那么将不在往下匹配,所以⼀般情况下将默认状态值放在最后。
Android开发教程:shape和selector的结合使用
Android开发教程:shape和selector的结合使⽤shape和selector是Android UI设计中经常⽤到的,⽐如我们要⾃定义⼀个圆⾓Button,点击Button有些效果的变化,就要⽤到shape和selector。
可以这样说,shape和selector在美化控件中的作⽤是⾄关重要的。
1.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 左下圆⾓半径2.Selector简介位置:res/drawable/⽂件的名称.xml使⽤的⽅法:Java代码中:R.drawable.⽂件的名称XML中:Android:background="@drawable/⽂件的名称"<?xml version="1.0" encoding="utf-8" ?><selector xmlns:Android="/apk/res/android"><!-- 默认时的背景图⽚--><item Android:drawable="@drawable/pic1" /><!-- 没有焦点时的背景图⽚ --><itemAndroid:state_window_focused="false"android:drawable="@drawable/pic_blue"/><!-- ⾮触摸模式下获得焦点并单击时的背景图⽚ --><itemAndroid:state_focused="true"android:state_pressed="true"android:drawable= "@drawable/pic_red"/><!-- 触摸模式下单击时的背景图⽚--><itemAndroid:state_focused="false"Android:state_pressed="true"Android:drawable="@drawable/pic_pink"/><!--选中时的图⽚背景--><itemAndroid:state_selected="true"android:drawable="@drawable/pic_orange"/><!--获得焦点时的图⽚背景--><itemAndroid:state_focused="true"Android:drawable="@drawable/pic_green"/></selector>第⼀个例⼦:圆⾓的Button第⼆个例⼦:shape+selector综合使⽤的例⼦漂亮的ListViewselector.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:Android="/apk/res/android"><item Android:state_selected="true"><shape><gradient Android:angle="270" android:endColor="#99BD4C"android:startColor="#A5D245" /><size Android:height="60dp" android:width="320dp" /><corners android:radius="8dp" /></shape></item><item Android:state_pressed="true"><shape><gradient Android:angle="270" android:endColor="#99BD4C"android:startColor="#A5D245"/><size Android:height="60dp" android:width="320dp" /><corners android:radius="8dp" /></shape></item><item><shape><gradient Android:angle="270" android:endColor="#A8C3B0"android:startColor="#C6CFCE" /><size Android:height="60dp" android:width="320dp" /><corners android:radius="8dp" /></shape></item></selector>list_item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:Android="/apk/res/android" android:orientation="horizontal"Android:layout_width="fill_parent"android:layout_height="wrap_content"Android:background="@drawable/selector"><ImageViewAndroid:id="@+id/img"Android:layout_width="wrap_content"android:layout_height="wrap_content"Android:layout_gravity="center_vertical"android:layout_marginLeft="20dp"/><TextViewAndroid:text="data"android:id="@+id/title"Android:layout_width="fill_parent"android:layout_height="wrap_content"Android:gravity="center_vertical"android:layout_marginLeft="20dp"Android:layout_marginTop="20dp"android:textSize="14sp"Android:textStyle="bold"android:textColor="@color/black"></TextView></LinearLayout>main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:Android="/apk/res/android" android:orientation="vertical"Android:layout_width="fill_parent"android:layout_height="wrap_content"Android:background="#253853"><ListViewAndroid:id="@+id/list"Android:layout_width="match_parent"android:layout_height="match_parent"Android:cacheColorHint="#00000000"android:divider="#2A4562"Android:dividerHeight="3px"android:listSelector="#264365"Android:drawSelectorOnTop="false"></ListView></LinearLayout>colors.xml<?xml version="1.0" encoding="utf-8"?><resources><color name="white">#FFFFFFFF</color><color name="transparency">#00000000</color><color name="title_bg">#1C86EE</color><color name="end_color">#A0cfef83</color><color name="black">#464646</color></resources>MainActivity.xmlpackage com.lingdududu.customlist;import java.util.ArrayList;import java.util.HashMap;import xb.customlist.R;import Android.R.array;import android.app.Activity;import Android.os.Bundle;import android.widget.ArrayAdapter;import Android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {ListView list;String data[] = new String[]{"China","UK","USA","Japan","German","Canada","ET","Narotu"};/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);list =(ListView) findViewById(R.id.list);SimpleAdapter adapter = new SimpleAdapter(this, getData(), yout.list_item,new String[]{"title","img"}, new int[]{R.id.title,R.id.img});list.setAdapter(adapter);}private ArrayList<HashMap<String, Object>> getData() {ArrayList<HashMap<String, Object>> dlist = new ArrayList<HashMap<String,Object>>(); for(int i =0;i<data.length;i++){HashMap<String, Object>map = new HashMap<String, Object>();map.put("title", data[i]);map.put("img", R.drawable.item_left2);dlist.add(map);}return dlist;}}。
android selector用法
android selector用法Android的Selector是一个可以为View的State状态设置不同属性的XML文件。
State状态包括normal(正常状态)、focused(焦点状态)、pressed(按下状态)、selected(选中状态)等等,Selector可以根据View的State状态来匹配不同的XML属性。
Selector最早的出现可以追溯到2010年左右,当时Android推出了2.3版本,这个版本带来了很多新特性,其中就包括了Selector。
当时,Selector被广泛应用于布局中Button的样式设置中。
在2011年,随着Android 3.0版本的推出,Selector逐渐被应用到其他View组件上,如ImageView等。
同时,Selector也被用于Menu的样式设置。
随着Android版本的不断升级,Selector的功能也得到了增强。
如Android 4.0版本推出的LayerDrawable属性,它可以更方便地设置View的背景、边框、圆角等属性。
今天,随着Android系统的版本不断升级,Selector已经成为了Android应用开发中非常重要的一个组件,不仅在UI的样式设置中经常用到,还可以用于State状态切换的动画效果设置、手势动作的响应等方面。
同时,Android开发者也不仅限于使用系统内置的Selector,还可以自定义Selector来满足特定的需求。
总的来说,Android的Selector在不断地发展与完善中,它已经成为了Android应用开发中不可或缺的一个组件,为Android应用的设计与开发提供了更多的可能性。
前端面试 css中知识点 selector 整理
面试官:css选择器有哪些?优先级?哪些属性可以继承?一、选择器CSS选择器是CSS规则的第一部分它是元素和其他部分组合起来告诉浏览器哪个HTML元素应当是被选为应用规则中的CSS属性值的方式选择器所选择的元素,叫做“选择器的对象”我们从一个Html结构开始<div id="box"><div class="one"><p class="one_1"></p><p class="one_1"></p></div><div class="two"></div><div class="two"></div><div class="two"></div></div>关于css属性选择器常用的有:•id选择器(#box),选择id为box的元素•类选择器(.one),选择类名为one的所有元素•标签选择器(div),选择标签为div的所有元素•后代选择器(#box div),选择id为box元素内部所有的div元素•子选择器(.one>one_1),选择父元素为.one的所有.one_1的元素•相邻同胞选择器(.one+.two),选择紧接在.one之后的所有.two元素•群组选择器(div,p),选择div、p的所有元素还有一些使用频率相对没那么多的选择器:•伪类选择器:link:选择未被访问的链接:visited:选取已被访问的链接:active:选择活动链接:hover:鼠标指针浮动在上面的元素:focus:选择具有焦点的:first-child:父元素的首个子元素•伪元素选择器:first-letter:用于选取指定选择器的首字母:first-line:选取指定选择器的首行:before: 选择器在被选元素的内容前面插入内容:after: 选择器在被选元素的内容后面插入内容•属性选择器[attribute] 选择带有attribute属性的元素[attribute=value] 选择所有使用attribute=value的元素[attribute~=value] 选择attribute属性包含value的元素[attribute|=value]:选择attribute属性以value开头的元素在CSS3中新增的选择器有如下:•层次选择器(p~ul),选择前面有p元素的每个ul元素•伪类选择器:first-of-type父元素的首个元素:last-of-type父元素的最后一个元素:only-of-type父元素的特定类型的唯一子元素:only-child父元素中唯一子元素:nth-child(n)选择父元素中第N个子元素:nth-last-of-type(n)选择父元素中第N个子元素,从后往前:last-child父元素的最后一个元素:root设置HTML文档:empty指定空的元素:enabled选择被禁用元素:disabled选择被禁用元素:checked选择选中的元素:not(selector)选择非 <selector>元素的所有元素•属性选择器[attribute*=value]:选择attribute属性值包含value的所有元素[attribute^=value]:选择attribute属性开头为value的所有元素[attribute$=value]:选择attribute属性结尾为value的所有元素二、优先级相信大家对CSS选择器的优先级都不陌生:内联 > ID选择器 > 类选择器 > 标签选择器到具体的计算层⾯,优先级是由 A 、B、C、D 的值来决定的,其中它们的值计算规则如下:•如果存在内联样式,那么 A = 1, 否则 A = 0•B的值等于 ID选择器出现的次数•C的值等于类选择器和属性选择器和伪类出现的总次数• D 的值等于标签选择器和伪元素出现的总次数这里举个例子:#nav-global> ul > li > a.nav-link套用上面的算法,依次求出A B C D的值:•因为没有内联样式,所以 A = 0•ID选择器总共出现了1次, B = 1•类选择器出现了1次,属性选择器出现了0次,伪类选择器出现0次,所以 C = (1 + 0 + 0) = 1•标签选择器出现了3次,伪元素出现了0次,所以 D = (3 + 0) = 3上面算出的A、B、C、D可以简记作:(0, 1, 1, 3)知道了优先级是如何计算之后,就来看看比较规则:•从左往右依次进行比较,较大者优先级更高•如果相等,则继续往右移动一位进行比较•如果4位全部相等,则后面的会覆盖前面的经过上面的优先级计算规则,我们知道内联样式的优先级最高,如果外部样式需要覆盖内联样式,就需要使用!important三、继承属性在css中,继承是指的是给父元素设置一些属性,后代元素会自动拥有这些属性关于继承属性,可以分成:•字体系列属性font:组合字体font-family:规定元素的字体系列font-weight:设置字体的粗细font-size:设置字体的尺寸font-style:定义字体的风格font-variant:偏大或偏小的字体•文本系列属性text-indent:文本缩进text-align:文本水平对刘line-height:行高word-spacing:增加或减少单词间的空白letter-spacing:增加或减少字符间的空白text-transform:控制文本大小写direction:规定文本的书写方向color:文本颜色•元素可见性visibility•表格布局属性caption-side:定位表格标题位置border-collapse:合并表格边框border-spacing:设置相邻单元格的边框间的距离empty-cells:单元格的边框的出现与消失table-layout:表格的宽度由什么决定•列表属性list-style-type:文字前面的小点点样式list-style-position:小点点位置list-style:以上的属性可通过这属性集合•引用quotes:设置嵌套引用的引号类型•光标属性cursor:箭头可以变成需要的形状继承中比较特殊的几点:• a 标签的字体颜色不能被继承•h1-h6标签字体的大下也是不能被继承的无继承的属性•display•文本属性:vertical-align、text-decoration•盒子模型的属性:宽度、高度、内外边距、边框等•背景属性:背景图片、颜色、位置等•定位属性:浮动、清除浮动、定位position等•生成内容属性:content、counter-reset、counter-increment•轮廓样式属性:outline-style、outline-width、outline-color、outline •页面样式属性:size、page-break-before、page-break-after。
安卓--selector简单使用
安卓--selector简单使⽤selector ---选择器在App的使⽤中经常能看到selector的⾝影如:⼀个按键看上去⽩⾊或者其它颜⾊,可能是⼀张图⽚按下去⼜显⽰其它的颜⾊或者另外⼀张图⽚这⾥使⽤shape配合使⽤正常状态<?xml version="1.0" encoding="utf-8"?><!--rectangle 矩形oval 椭圆line ⼀条线ring 环形--><shapeandroid:shape="rectangle"xmlns:android="/apk/res/android"><!--4个⾓的圆⾓--><corners android:radius="8dp"/><!--内边距--><padding android:bottom="5dp"android:left="3dp"android:right="3dp"android:top="5dp"/><!--填充颜⾊--><solid android:color="#09A3DC"/><!--边框颜⾊--><stroke android:color="#88000000"android:width="1dp"/></shape>按下状态<?xml version="1.0" encoding="utf-8"?><!--rectangle 矩形oval 椭圆line ⼀条线ring 环形--><shapeandroid:shape="rectangle"xmlns:android="/apk/res/android"><!--4个⾓的圆⾓--><corners android:radius="8dp"/><!--内边距--><padding android:bottom="5dp"android:left="3dp"android:right="3dp"android:top="5dp"/><!--填充颜⾊--><solid android:color="#0066A0"/><!--边框颜⾊--><stroke android:color="#88000000"android:width="1dp"/></shape>selector<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><!--按下时显⽰这个shapeandroid:state_pressed="true"这⾥可以有多种状态选择,--><item android:drawable="@drawable/shap_btn_press" android:state_pressed="true"/><!--平时显⽰这个shape--><item android:drawable="@drawable/shap_btn_normal"/></selector>布局中引⽤<Buttonandroid:layout_margin="10dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#ffffff"android:background="@drawable/selector_main_btn"android:text="确定"/>有图⽚就去需要建⽴⼀个selector 在drawable指定不同的图⽚即可,在ImageView指定background使⽤selector,再指定相就事件来触发,下⾯是点击事件<selector xmlns:android="/apk/res/android"><item android:state_pressed="true" android:drawable="@drawable/ic_menu_add_pressed"/><item android:drawable="@drawable/ic_menu_add_normal"/></selector>。
java selector用法
java selector用法Java中的Selector是一种与非阻塞I/O(Non-Blocking I/O)相关的类,它可以使得一个线程可以同时管理多个通道(Channel),并能够检测这些通道中哪些已经就绪可以进行数据读写。
Selector的使用可以极大地提高I/O的效率,尤其在网络编程领域,常常与NIO(New I/O)相结合使用。
Selector类位于java.nio.channels包下,它通过Selector.open()方法来创建一个Selector对象。
下面我们来详细介绍一下Selector的使用。
1. 注册通道在使用Selector之前,我们需要将一个或多个通道注册到Selector上,以便Selector能够管理这些通道。
通道可以是FileChannel、SocketChannel、ServerSocketChannel或DatagramChannel。
要将通道注册到Selector上,需要调用通道对象的register()方法,该方法接受一个Selector对象和一个表示关注事件的整数值。
关注事件可以是以下四种之一:- SelectionKey.OP_READ:表示关注读就绪事件- SelectionKey.OP_WRITE:表示关注写就绪事件- SelectionKey.OP_CONNECT:表示关注连接就绪事件- SelectionKey.OP_ACCEPT:表示关注接收就绪事件示例代码如下:SocketChannel socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false);socketChannel.connect(new InetSocketAddress("localhost", 8080));Selector selector = Selector.open();socketChannel.register(selector, SelectionKey.OP_CONNECT);2. 监听通道就绪事件一个Selector对象可以同时管理多个通道,并能够检测这些通道中哪些已经就绪可以进行读写操作。
xpath selector的使用方法
xpath selector的使用方法XPath选择器是一种用于定位和选择XML(或HTML)文档中特定元素的查询语言。
XPath选择器是在XML标准中定义的一种标准的方式,广泛应用于各种编程语言和工具中。
XPath选择器有多种不同的语法,最常见的语法是基于路径表达式的。
该语法使用路径指定元素的层次结构或者关联关系。
以下是XPath 选择器的常用语法示例:1.选择所有元素:- `//*`:选择文档中的所有元素。
2.选择具有特定元素名称的元素:- `//element`:选择所有具有特定元素名称的元素。
3.选择具有特定属性的元素:- `//element[@attribute]`:选择具有特定属性的元素。
- `//element[@attribute='value']`:选择具有特定属性值的元素。
- `//element[starts-with(@attribute, 'value')]`:选择属性值以特定值开头的元素。
- `//element[contains(@attribute, 'value')]`:选择属性值包含特定值的元素。
4.选择具有特定父元素的子元素:- `//parent/child`:选择具有特定父元素的子元素。
5.选择具有特定位置的元素:- `//element[position()=1]`:选择文档中的第一个具有特定元素名称的元素。
- `//element[last()]`:选择文档中的最后一个具有特定元素名称的元素。
- `//element[position() > 1]`:选择文档中的第二个及以后的具有特定元素名称的元素。
6.选择具有特定文本内容的元素:- `//element[text()='value']`:选择具有特定文本内容的元素。
7.选择具有特定父元素和特定文本内容的元素:- `//parent/child[text()='value']`:选择具有特定父元素和特定文本内容的元素。
android kotlin selector扩展函数 -回复
android kotlin selector扩展函数-回复初学者指南:Android Kotlin中的Selector扩展函数选择器是Android中常用的一种UI控件,其允许我们根据不同的状态选择不同的资源文件或者样式。
在Kotlin中,我们可以使用扩展函数为选择器提供更强大的功能。
本文将介绍如何使用Selector扩展函数来创建和使用选择器。
第一步:了解Selector在Android中,选择器是一种XML文件,在其中定义了不同状态下的资源。
选择器允许我们根据不同的状态,如按下、获得焦点或禁用等,选择不同的背景、边框或者文本颜色等资源。
一般来说,一个选择器会包含多个item,每个item都定义了一组资源文件和对应的状态。
第二步:创建Selector扩展函数为了简化选择器的使用,我们可以使用Kotlin扩展函数为选择器添加更多的便捷功能。
首先,我们需要在项目中的某个Kotlin文件中创建一个扩展函数。
kotlinfun View.setDefaultSelector(DrawableRes default: Int, DrawableRes pressed: Int? = null, DrawableRes focused: Int? = null, DrawableRes disabled: Int? = null) {val drawable = StateListDrawable()context?.let { ctx ->pressed?.let{ drawable.addState(intArrayOf(android.R.attr.state_pressed), ContextCompat.getDrawable(ctx, it)) }focused?.let{ drawable.addState(intArrayOf(android.R.attr.state_focused), ContextCompat.getDrawable(ctx, it)) }disabled?.let{ drawable.addState(intArrayOf(-android.R.attr.state_enabled), ContextCompat.getDrawable(ctx, it)) }}drawable.addState(intArrayOf(),ContextCompat.getDrawable(context, default))background = drawable}上述代码中,我们定义了一个名为`setDefaultSelector`的扩展函数,接收了四个资源参数:默认状态、按下状态、焦点状态和禁用状态。
Selector源码学习笔记
Selector源码学习笔记Selector学习笔记.⽬录Selector open流程sequenceDiagram Selector.open()-->>SelectorProvider: SelectorProvider.provider() SelectorProvider-->>Selector.open(): 返回具体SelectorProvider Selector.open()-->>具体SelectorProvider: 具体SelectorProvider.openSelector()具体SelectorProvider-->>Selector.open(): 返回具体SelectorSelector.open()可以看到Selector是由Selector.provider()提供的provider提供的.所以接下来看看SelectorProvider::provider⽅法public static Selector open() throws IOException {return SelectorProvider.provider().openSelector();}SelectorProvider.provider()graph LR A[SelectorProvider::provider] A --> B{环境变量是否有值} B-->|有| E[返回] B -->|⽆| C{SPI是否有Provider实现} C -->|有| E C -->|⽆| D[sun.nio.ch.DefaultSelectorProvider::create] D --> Eprovider返回有多种情况,具体优先级见下从系统环境变量"java.nio.channels.spi.SelectorProvider"中加载指定的Provider通过java SPI加载Provider实现默认Provider,通过sun.nio.ch.DefaultSelectorProvider.create()创建,且根据jdk不同rt包⾥的实现也不同.public static SelectorProvider provider() {synchronized (lock) {if (provider != null)return provider;return AccessController.doPrivileged(new PrivilegedAction<SelectorProvider>() {public SelectorProvider run() {//从系统环境变量中"java.nio.channels.spi.SelectorProvider"加载Provider实现.if (loadProviderFromProperty())return provider;//通过JAVA SPI加载Provider的实现if (loadProviderAsService())return provider;//默认Providerprovider = sun.nio.ch.DefaultSelectorProvider.create();return provider;}});}}sun.nio.ch.DefaultSelectorProvider.create()DefaultSelectorProvider在不同的rt包实现不⼀样.所以通过这种⽅式会因为不同的操作系统得到不⼀样的结果.截⽌jdk8为⽌可获取的具体Selector实现如下:windows版DefaultSelectorProviderwindows版本就直接返回windowsSelectorProviderpublic static SelectorProvider create() {return new WindowsSelectorProvider();}linux版DefaultSelectorProvidergraph LR A[sun.nio.ch.DefaultSelectorProvider] A --> B{环境变量} B-->|=='SunOs'| E[sun.nio.ch.DevPollSelectorProvider] B --> C{=='linux'} C -->|是| D[sun.nio.ch.EPollSelectorProvider] C -->|⽆|F[PollSelectorProvider]linux版本则根据环境变量返回对应的provider.2.6以后的linux返回的是EPollSelectorProviderpublic static SelectorProvider create() {String var0 = (String)AccessController.doPrivileged(new GetPropertyAction(""));if (var0.equals("SunOS")) {return createProvider("sun.nio.ch.DevPollSelectorProvider");} else {return (SelectorProvider)(var0.equals("Linux") ? createProvider("sun.nio.ch.EPollSelectorProvider") : new PollSelectorProvider());}}SelectorProvider.openSelector()不同的provider来⾃于SelectorProvider.provider()创建,⽽具体provider的openSelector⽅法则负责返回具体的Selector.WindowsSelectorProvider.openSelector()返回WindowsSelectorImpl.javapublic AbstractSelector openSelector() throws IOException {return new WindowsSelectorImpl(this);}EPollSelectorProvider.openSelector()返回EPollSelectorImplpublic AbstractSelector openSelector() throws IOException {return new EPollSelectorImpl(this);}register流程sequenceDiagram AbstractSelectableChannel-->>AbstractSelector: register() AbstractSelector-->>SelectorImpl: register() SelectorImpl-->>具体Selector实现: implRegister() 具体Selector实现-->>SelectorImpl: SelectorImpl-->>AbstractSelector: AbstractSelector-->>AbstractSelectableChannel:AbstractSelectableChannel::register如上图所⽰,⾸先只有SelectableChannel可以注册⾄selector上,⽽我们常⽤到的⼤部分channel基本都继承⾃SelectableChannel.接下来看看AbstractSelectableChannel::register的API介绍使⽤给定的Selector注册此Channel,并返回SelectionKey。
详解Android首选项框架的使用实例
详解Android⾸选项框架的使⽤实例⾸选项这个名词对于熟悉Android的朋友们⼀定不会感到陌⽣,它经常⽤来设置软件的运⾏参数。
Android提供了⼀种健壮并且灵活的框架来处理⾸选项。
它提供了简单的API来隐藏⾸选项的读取和持久化,并且提供了⼀个优雅的⾸选项界⾯。
⾸先,我们来看下⾯这款软件的⾸选项界⾯:这款软件使⽤了好⼏种类型的⾸选项,每⼀种⾸选项都有其独特的⽤法,下⾯我们来了解⼀下⼏种常见的⾸选项:CheckBoxPreference:⽤来打开或关闭某个功能ListPreference:⽤来从多个选项中选择⼀个值;EditTextPreference:⽤来配置⼀段⽂字信息;Preference:⽤来执⾏相关的⾃定义操作(上图中的清除缓存、历史记录、表单、cookie都属于此项);RingtonePreference:专门⽤来为⽤户设置铃声。
当我们使⽤⾸选项框架时,⽤户每更改⼀项的值后,系统就会⽴即在/data/data/[PACKAGE_NAME]/shared_prefs下⽣成⼀个[PACKAGE_NAME]_preferences.xml的⽂件,⽂件会记录最新的配置信息。
那么如何使⽤⾸选想框架呢?我们需要以下⼏步操作:1.建⽴⼀个⾸选项的xml配置⽂件,放在项⽬的/res/xml⽬录下⾯;2.新建⼀个Activity,继承android.preference.PreferenceActivity,然后在onCreate⽅法中加载我们的⾸选项配置⽂件。
下⾯,我就为⼤家演⽰⼀下⾸选项框架的配置和使⽤:我们新建⼀个prefs项⽬,项⽬结构如下:我们要实现的功能跟上⾯那款软件的很相似,下⾯我来说明⼀下这个项⽬的整体流程:1.主界⾯。
显⽰⽤户昵称,有三个参数,昵称⽂字、字体⼤⼩和背景颜⾊。
⾸次进⼊时,使⽤默认值。
2.按下menu键中的settings项,跳转到⾸选项页⾯,进⾏参数选择。
3.按下返回键,返回主界⾯,设定后的参数⽣效。
useselector 非hook用法
useselector 非hook用法selector是Redux提供的一个重要的工具,用于对state进行操作和筛选。
在不使用React Hooks的情况下,selector可以很方便地将state中的数据通过Props传递到组件中,从而进行展示和交互。
selector通常有两种类型:input selector和output selector。
input selector用于将整个state映射为组件需要的数据,output selector则负责将transform后的数据再映射到组件中,便于UI的展示和交互。
三、selector的实现selector是一个普通的函数,它可以接收整个state作为参数,也可以接收其他的参数,比如搜索关键字、过滤条件等。
在selector中,我们一般会使用lodash等工具库对state进行转化和处理,从而满足UI组件的需求。
一个简单的input selector示例如下:```import { createSelector } from 'reselect';import { AppState } from '../reducers';const getAppState = (state: AppState) => state;const getSelectedUser = createSelector(getAppState,(appState) => er.data.find((user) => user.id ===er.selectedId),);return (<div><h2>User Info</h2><p>{`Name: ${selectedUser?.name}`}</p><p>{`Age: ${selectedUser?.age}`}</p></div>);};export default UserInfo;```我们通过useSelector函数引入了getSelectedUser函数,从而在UI组件中直接使用selectedUser对象,展示了用户的信息。
【最新2018】选择器selector笔记总结word版本 (5页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==选择器selector笔记总结导读:小编在此分享关于选择器(selector)的笔记。
这对其他朋友应该也是有用的,毕竟选择器是制作网页效果的第一步。
笔记分为两个部分,今天是CSS的选择器,以后还有一部分xPath的选择器。
今天的笔记中包括44个选择器,基本涵盖了CSS 2和CSS 3的所有规定。
一、序号选择器含义* 通用元素选择器,匹配任何元素2.E标签选择器,匹配所有使用E标签的元素class选择器,匹配所有class属性中包含info的元素4. #footer id选择器,匹配所有id属性等于footer的元素实例:复制代码代码如下:* { margin:0; padding:0; }p { font-size:2em; }.info { background:#ff0; } { background:#ff0; }.error { color:#900; font-weight:bold; }#info { background:#ff0; }p#info { background:#ff0; }二、多元素的组合选择器序号选择器含义5. E,F多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔6. E F后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔7.E > F子元素选择器,匹配所有E元素的子元素F8.E + F毗邻元素选择器,匹配所有紧随E元素之后的同级元素F实例:复制代码代码如下:div p { color:#f00; }#nav li { display:inline; }#nav a { font-weight:bold; }div > strong { color:#f00; }p + p { color:#f00; }三、CSS 2.1 属性选择器序号选择器含义9. E[att]匹配所有具有att属性的E元素,不考虑它的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
public void setEmail(String email) {
this.email = email;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
相关属性:
android:state_selected是选中
android:state_focused是获得焦点
android:state_pressed是点击
android:state_enabled是设置是否响应事件,指所有事件
根据这些状态同样可以设置button的selector效果。也可以设置selector改变button中的文字状态。
第一个是访问网络 第二来自是访问sdcard 访问网络是请求网络图片的时候需要或者是http数据请求时候需要,访问sdcard是图片缓存的需要。
afinal的FinalDb组件是android的一个轻量级的orm框架,使用简单,一行代码就可以完成数据库的各种操作功能。
@Table(name="user_test")
public class User {
private int id;
private String name;
private String email;
private Date registerDate;
private Double money;
FinalBitmap的内存管理使用lru算法,没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,
用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器,在imageview显示图片的时候播放动画等(默认是渐变动画显示)。
/////////////getter and setter 不能省略哦///////////////
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
User user = new User();
user.setEmail("afinal@");
user.setName("探索者");
user.setRegisterDate(new Date());
db.save(user);
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public String getEmail() {
return email;
}
}
public class AfinalOrmDemoActivity extends FinalActivity {
@ViewInject(id=R.id.textView) TextView textView; //这里使用了afinal的ioc功能
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(yout.main);
FinalDb db = FinalDb.create(this);
android:drawable="@drawable/pic4" />
<!--获得焦点时的图片背景-->
<item android:state_focused="true"
android:drawable="@drawable/pic5" />
</selector>
List<User> userList = db.findAll(User.class);//查询所有的用户
Log.e("AfinalOrmDemoActivity", "用户数量:"+ (userList!=null?userList.size():0));
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/pic3" />
<!--选中时的图片背景-->
<item android:state_selected="true"
1. android背景选择器selector用法汇总
一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="/apk/res/android">
FinalHttp模块:通过httpclient进行封装http数据请求,支持ajax方式加载。
FinalBitmap模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。
2. afinal框架-Afinal 是一个android的sqlite orm 和 ioc 框架
FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。
FinalActivity模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片 -->
<item android:state_window_focused="false"
android:drawable="@drawable/pic1" />
afinal的主键机制是:net.tsz.afinal.annotation.sqlite.Id
当给某个属性添加注解@id的时候,该属性就是主键(一个类中只有一个主键),保存在数据库中的列名为属性的名称,@Id(column="userId")给属性添加注解的时候,保存在数据库的列名是userId,当这个属性没有的时候,afinal自动回去该类查找_id属性,
首先我们来创建一个测试实体类 User.java
public class User {
private int id;
private String name;
private String email;
private Date registerDate;
private Double money;
_id属性也没有的时候,afinal就会自动去查找id属性。如果连id属性也没有,那么afinal就报错啦,afinal的orm规则中,表示必须有主键的,而且只能有一个(目前暂时不支持复合主键)。
在FinalDb db = FinalDb.create(this); 在create方法中有:
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item android:state_focused="true"
android:state_pressed="true"
android:drawable= "@drawable/pic2" />
<!-- 触摸模式下单击时的背景图片-->
二.使用xml文件:
1.方法一:在listview中配置android:listSelector="@drawable/xxx 或者在listview的item中添加属性android:background="@drawable/xxx"
2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx); ListView.setSelector(drawable);但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。