android中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的selector背景选择器

<!-- 没有焦点时的背景图片-->
<item android:state_window_focused="false" android:drawable="@drawable/pic1" />
<!-- 非触摸模式下获得焦点并单击时的背景图片-->
android:focusable="true"
android:backgroud="@drawable/button_color"
这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊
android:bottom="10dp" android:right="10dp" />
</shape>
</item>
</selector>
最后,需要在包含button的xml文件里添加两项。假如是main.xml 文件,我们需要在<Button />里加两项。
<stroke android:width="2dp" android:color="#333333" color="#ffffff" />
<corners android:radius="8dp" />
<padding android:left="10dp" android:top="10dp"
ListView.setSelector(drawable);同样的效果。
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" />
安卓开发selector使用

安卓开发中selector的用法安卓开发中关于listview和button都要改变android原来控件的背景,网上的资料太杂了,现在总结下android的selector的用法。
首先android的selector是在drawable/xxx.xml中配置的。
先看一下listview中的状态:把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
drawable/list_item_bg.xml<?xml version="1.0" encoding="utf-8" ?><selector xmlns:android="/apk/res/android"> <!-- 默认时的背景图片--><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" /><!-- 触摸模式下单击时的背景图片--><item android:state_focused="false" android:state_pressed="true"android:drawable="@drawable/pic3" /><!--选中时的图片背景--><item android:state_selected="true" android:drawable="@drawable/pic4" /><!--获得焦点时的图片背景--><item android:state_focused="true" android:drawable="@drawable/pic5" /></selector>使用些xml文件:第一种是在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);ListView.setSelector(drawable);同样的效果。
Android中的Selector的用法详解及实例

Android中的Selector的⽤法详解及实例Android中的Selector的⽤法<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android" ><item android:state_pressed="true" android:drawable="@drawable/bg_selected"></item><item android:drawable="@drawable/bg_unselect"></item></selector>在⼯作的时候,由于系统给出的控件不够美观,因此开发时领导常常要我更改下界⾯,⽤美⼯给的图⽚取代系统图⽚。
开始时,我只是给按钮等设置⼀下背景图⽚,这样做虽然美观了,但界⾯看起来却⽐较死板,⽐如⽤户点击了按钮后,按钮没⼀点反应。
于是我就再给控件添加上onTouch监听事件,按下后改变背景颜⾊,松⼿后再恢复原来颜⾊。
但后来发现了selector这个利器,真是喜出望外,不⽤再添加onTouch监听事件了,⽤起来也⽅便灵活。
不得不说,多和其他开发⼈员交流技术经验等还是很有必要的,特别是像我这样独⾃负责⼀个app开发的。
Android的selector要在 drawable 下配置。
其中,selector可以设置的属性有:android:state_pressed 如果是true,当被点击时显⽰该图⽚,如果是false没被按下时显⽰默认。
android:state_focused 如果是true,获得焦点时显⽰;如果是false没获得焦点显⽰默认。
android:state_selected 如果是true,当被选择时显⽰该图⽚;是false未被选择时显⽰该图⽚。
android presenterselector用法

android presenterselector用法(实用版)目录1.Android PresenterSelector 的概述2.PresenterSelector 的作用3.PresenterSelector 的用法4.PresenterSelector 的实际应用示例正文【1.Android PresenterSelector 的概述】Android PresenterSelector 是一个用于优化 Android 应用程序性能的工具,它允许您在不同的界面之间轻松地切换 Presenter。
通过使用PresenterSelector,您可以在不同的活动、片段或对话框之间共享相同的 Presenter,从而减少内存使用和提高应用程序的响应速度。
【2.PresenterSelector 的作用】PresenterSelector 的主要作用是管理 Presenter 的生命周期和状态。
它通过一个简单的接口,允许您在不同的界面之间共享 Presenter,而无需为每个界面创建单独的 Presenter 实例。
这样可以有效地避免内存泄漏和提高应用程序的性能。
【3.PresenterSelector 的用法】要在 Android 应用程序中使用 PresenterSelector,您需要执行以下步骤:1) 创建一个实现 PresenterSelector 接口的类。
在这个类中,您需要实现三个方法:`getPresenter()`、`getView()`和`getActivity()`。
这些方法允许您在不同的界面之间切换 Presenter。
2) 在您的应用程序中注册 PresenterSelector。
您可以在 Activity 的生命周期方法(如`onCreate()`)中注册 PresenterSelector。
这可以通过调用`getPresenterSelector()`方法并传入您创建的PresenterSelector 实例来完成。
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 是背景图状态列表,可以跟图片一样使用,背景会根据组件的状态变化而变化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈android的selector背景选择器----------------------------------------------------Item顺序是有讲究的,条件限定越细致,则应该放到前面。
比如这儿如果把1,2行和3,4行的item交换,那么pressed的就永远无法触发了,因为有item已经满足条件返回了。
可以理解为代码中的if语句。
----------------------------------------------------关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。
首先android的selector是在drawable/xxx.xml中配置的。
先看一下listview中的状态:把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。
drawable/list_item_bg.xml<?xml version="1.0" encoding="utf-8" ?><selector xmlns:android="/apk/res/android"><!-- 没有焦点时的背景图片--><item android:state_window_focused="false" android:drawable="@drawable/pic1" /><!-- 非触摸模式下获得焦点并单击时的背景图片--><item android:state_focused="true" android:state_pressed="true"android:drawable="@drawable/pic2" /><!-- 触摸模式下单击时的背景图片--><item android:state_focused="false" android:state_pressed="true"android:drawable="@drawable/pic3" /><!--选中时的图片背景--><item android:state_selected="true" android:drawable="@drawable/pic4" /><!--获得焦点时的图片背景--><item android:state_focused="true" android:drawable="@drawable/pic5" /><!-- 正常状态的item必须放在最后,否则无法生效--><!-- 默认时的背景图片--><item android:drawable="@drawable/pic1" /></selector>使用些xml文件:第一种是在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);ListView.setSelector(drawable);同样的效果。
但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"使其透明。
其次再来看看Button的一些背景效果:android:state_selected是选中android:state_focused是获得焦点android:state_pressed是点击android:state_enabled是设置是否响应事件,指所有事件根据这些状态同样可以设置button的selector效果。
也可以设置selector改变button中的文字状态。
以下就是配置button中的文字效果:drawable/button_font.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:state_selected="true" android:color="#FFF" /><item android:state_focused="true" android:color="#FFF" /><item android:state_pressed="true" android:color="#FFF" /><item android:color="#000" /></selector>Button还可以实现更复杂的效果,例如渐变啊等等。
drawable/button_color.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/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" color="#ffffff" /><corners android:radius="8dp" /><padding android:left="10dp" android:top="10dp"android:bottom="10dp" android:right="10dp" /></shape></item></selector>最后,需要在包含button的xml文件里添加两项。
假如是main.xml 文件,我们需要在<Button />里加两项。
android:focusable="true"android:backgroud="@drawable/button_color"这样当你使用Button的时候就可以甩掉系统自带的那黄颜色的背景了,实现个性化的背景,配合应用的整体布局非常之有用啊---------------------------------------------shape 使用-------------------------------------------------------------------------------------编写xml文件放到res/drawable-*/下面最基本的写法如下<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"><gradient ---渐变android:startColor="#3A3C39"android:endColor="#181818"android:angle="270"/><corners android:radius="0dp" /></shape>使用方法:android:background="@drawable/shape_background_grey"<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"><gradientandroid:startColor="#3A3C39"android:endColor="#181818"android:angle="270" ----角度/><corners android:radius="0dp"/></shape>使用方法:android:background="@drawable/shape_background_grey"其中android:angle="270" 代表方向,270表示从上到下,180表示从右到左,默认从左复杂一点的写法如下<shape xmlns:android="/apk/res/android"android:shape="rectangle"><!-- 实心--><solid android:color="#ff9d77"/><!-- 渐变--><gradientandroid:startColor="#ff8c00"android:endColor="#FFFFFF"android:angle="270" /><!-- 描边--><stroke//可设置虚线android:dashWidth="5dp"android:dashGap="3dp"android:width="2dp"android:color="#dcdcdc" /><!-- 圆角--><cornersandroid:radius="2dp" /><paddingandroid:left="10dp"android:top="10dp"android:right="10dp"android:bottom="10dp" /></shape><shape xmlns:android="/apk/res/android"><gradient android:angle="0" android:startColor="#FFdaf3fc"android:centerColor="#FFd4e9a9" android:endColor="#FFdaf3fc"/></shape><shape xmlns:android="/apk/res/android"android:shape="rectangle"><gradient android:type="radial" android:gradientRadius="250"android:startColor="#E9E9E9" android:endColor="#D4D4D4"/></shape><shape xmlns:android="/apk/res/android"><gradient android:angle="0" android:startColor="#FFdaf3fc"android:centerColor="#FFd4e9a9" android:endColor="#FFdaf3fc"/></shape>在这里要注意android:type="radial"类型的使用会有不同的效果android:centerColor="#FFd4e9a9" 通常这个也不是被人常用<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"android:shape="rectangle"><gradient android:startColor="#509245" android:centerColor="#3e8532"android:endColor="#509245" android:type="linear" android:angle="90"android:centerX="0.5" android:centerY="0.5"/><padding android:left="7dp" android:top="7dp" android:right="7dp"android:bottom="7dp"/><corners android:radius="4dp"/></shape><?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"android:shape="rectangle"><gradient android:startColor="#509245" android:centerColor="#3e8532"android:endColor="#509245" android:type="linear" android:angle="90"android:centerX="0.5" android:centerY="0.5"/><padding android:left="7dp" android:top="7dp" android:right="7dp"android:bottom="7dp"/><corners android:radius="4dp"/></shape>android:shape 配置的是图形的形式,主要包括矩形(rectangle)、椭圆形(oval)、线(line)、环(ring)等,上边代码为方形。