Android(安卓)selector 状态选择器
16lz
2021-12-04
一、目的效果
越好的用户体验来源更直接更明显的事件反馈。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:bg_qq_iv_selector.xml
<?xml version="1.0" encoding="utf-8"?>
使用shape为Button的背景图,并设置selector:
bg_bt_drawable_normal.xml:
<?xml version="1.0" encoding="utf-8"?>
bg_bt_drawable_pressed.xml:
<?xml version="1.0" encoding="utf-8"?>
bg_bt_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
activity_main.xml中使用:
<?xml version="1.0" encoding="utf-8"?>
MainActivity.Java中应用效果:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { /** * qq登录按钮 */ private LinearLayout qqLoginLL; /** * 微信登录按钮 */ private LinearLayout weixinLoginLL; /** * 文字和Button一起 */ private LinearLayout textButtonLL; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.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); } @Override public 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"?>
不能实现对应效果!!! 2,TextView selector需要放置在 res/corlor目录下
3,Button的点击事件优先级高于包含他的父控件,需要将他只为不可点击状态,才能保证状态的一致性。
源码Demo
越到后面才会发现,很多事情不是因为有希望才坚持,而是因为坚持才有希望。
我不清楚自己的未来,只是希望自己的基础越来越稳固,汗水流淌的越来越多。
愿你我一起共同进步~~
更多相关文章
- 浅谈android的selector,背景选择器
- 浅谈android的selector,背景选择器
- 详解 Android(安卓)的 Activity 组件
- Android(安卓)学习之一
- Android(安卓)selector状态选择器的使用详解
- Android中webview加载的网页上的按钮点击失效
- 浅谈android的selector背景选择器
- Android(安卓)activity的生命周期
- Android一日笔记