一、目的效果

       越好的用户体验来源更直接更明显的事件反馈。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



           越到后面才会发现,很多事情不是因为有希望才坚持,而是因为坚持才有希望

           我不清楚自己的未来,只是希望自己的基础越来越稳固,汗水流淌的越来越多。

           愿你我一起共同进步~~


更多相关文章

  1. 浅谈android的selector,背景选择器
  2. 浅谈android的selector,背景选择器
  3. 详解 Android(安卓)的 Activity 组件
  4. Android(安卓)学习之一
  5. Android(安卓)selector状态选择器的使用详解
  6. Android中webview加载的网页上的按钮点击失效
  7. 浅谈android的selector背景选择器
  8. Android(安卓)activity的生命周期
  9. Android一日笔记

随机推荐

  1. Android(安卓)View 属性大全
  2. Android(安卓)shell 系统命令
  3. android设置EditText不可编辑内容,响应点
  4. Android界面布局基本知识简述
  5. TextView处理显示字数过长
  6. Android(安卓)4 编程入门经典
  7. 系出名门Android(7) - 控件(View)之ZoomC
  8. Android(安卓)神兵利器Dagger2使用详解(四
  9. 使用Python开发Android应用程序:第一节 在
  10. android activity之间平滑切换