Android开发偷懒技巧之XSelector

平时我们在开发项目时看到设计稿中有各种对控件设置在不同状态下显示不同的背景(边框、颜色等)样式或者不同的文字显示颜色等效果,这时候我们就需要在项目的resource目录下的drawable中创建对应的Selector.xml文件然后通过setBackground方法设置到对应的控件中以显示想要的效果。如果项目中的效果一直,只采用一两种样式效果还好,我们只需建立一两个selectro.xml文件即可,万一效果多式多样,那么项目中的文件就会增添很多。


目的:XSelector工具旨在解决项目中selector.xml文件随着需求的增加不断增多的问题,创造一个可以用代码在TextView、EditText、Button等控件设置selector背景(触摸反馈,样式变化、文字颜色变化、hint文字颜色变化等效果)的组件, 再也不用写selector.xml了,瞬间感觉好爽歪歪啊,如若感觉对你还有帮助,希望点个赞,star一下, [XSelector  GitHub]


先来看下XSelector能实现哪些效果,如下图所示(包含图中样式但不限于这些样式哦):

前往这里排版看着更舒服些


## XSelector如何使用
把工具类引入到项目中:`compile 'com.android.util:xselector:1.0.1'`。


## 初始化:
在Application中进行初始化: `XSelector.init(this);`


## 工具相关使用方法
   ****
1. **ShapeSelector**
     + 圆形边框
        
TextView tv_oval_line = (TextView) findViewById(R.id.tv_oval_line);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.OVAL)
                .defaultBgColor(R.color.colorAccent)
                .defaultStrokeColor(R.color.colorAccent)
                .strokeWidth(1)
                .into(tv_oval_line);
    + 方形虚线圆角边框
     
TextView tv_rect_dash_line_radius = (TextView)findViewById(R.id.tv_rect_dash_line_radius);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.RECTANGLE)
                .defaultBgColor(R.color.colorAccent)
                .dashLine(1, R.color.colorPrimary, 5, 5)
                .radius(5)
                .into(tv_rect_dash_line_radius);


         TextView tv_rect_diagonal2 =  (TextView)findViewById(R.id.tv_rect_diagonal2);
         XSelector.shapeSelector()
                .setShape(GradientDrawable.RECTANGLE)
                .defaultBgColor(R.color.colorAccent)
                .trRadius(10)
                .blRadius(10)
                .into(tv_rect_diagonal2);
 
 + 触摸反馈
       ```
        TextView tv_oval_solid = (TextView) findViewById(R.id.tv_oval_solid);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.OVAL)
                .defaultBgColor(R.color.colorAccent)
                .pressedBgColor(R.color.colorPrimary)
                .into(tv_oval_solid);
   + 渐变效果
     
TextView tv_gradient_linear_tb =  (TextView)findViewById(R.id.tv_gradient_linear_tb);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.RECTANGLE)
                .gradientLinear(ShapeSelector.TOP_BOTTOM, R.color.colorAccent, R.color.colorPrimary)
                .into(tv_gradient_linear_tb);


        TextView tv_gradient_sweep =  (TextView)findViewById(R.id.tv_gradient_sweep);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.OVAL)
                .gradientSweep(R.color.colorAccent, R.color.colorPrimary)
                .into(tv_gradient_sweep);


        TextView tv_gradient_radial =  (TextView)findViewById(R.id.tv_gradient_radial);
        XSelector.shapeSelector()
                .setShape(GradientDrawable.OVAL)
                .gradientRadial(30, R.color.colorAccent, R.color.colorPrimary)
                .into(tv_gradient_radial);

   **详细方法名如下:**


     |方法名     |                                          描述          |
     |:---|:---:|
     |setShape(@Shape int shape)                  |    边框背景形状        |
     |defaultBgColor/disabledBgColor|默认背景颜色|
     |disabledBgColor|不可点击背景色|
     |pressedBgColor|触摸背景色|
     |selectedBgColor|选中背景色|
     |focusedBgColor |获取焦点背景色|
     |strokeWidth                                      | 边框宽度         |
     |defaultStrokeColor         |默认边框颜色  |
     |disabledStrokeColor|不可点击边框背景色|
     |pressedStrokeColor|触摸边框背景色|
     |selectedStrokeColor|选中边框背景色|
     |focusedStrokeColor         |获取焦点边框背景色|
     |dashLine                   |                      边框虚线样式        |
     |gradient                             |             渐变样式   |      
     |gradientLinear           |                        线性渐变样式       |
     |gradientSweep            |                        扫描渐变样式        |
     |gradientRadial             |                      辐射渐变样式        |
     |radius                           |                设置圆角弧度        |
     |trRadius/tlRadius/brRadius/blRadius    |    设置右上圆角/左上/右下/左下 |   
     |build                             |           生成样式Drawable  |   
     |into                              |             填充目标View       |
      ****                                                                
  
2. **ColorSelector和DrawableSelector**      
    +  作用在TextView
         ```
        XSelector.colorSelector()
                .defaultColor(R.color.black)
                .selectedColor(R.color.yellow)
                .disabledColor(R.color.gray)
                .into(tv4);
         ```
    +  作用在EditText
         ```
         //作用在setTextColor
        XSelector.colorSelector()
                .defaultColor(R.color.gray)
                .focusedColor(R.color.black)
                .into(et1);
        //作用在setHintTextColor
        XSelector.colorSelector()
                .defaultColor(R.color.gray)
                .focusedColor(R.color.white)
                .textType(ColorSelector.HINT_TEXT_COLOR)
                .into(et1);
         ```
    +  作用在Button
         ```
        XSelector.drawableSelector()
                .defaultDrawable(R.mipmap.blue_primary)
                .pressedDrawable(R.mipmap.blue_primary_dark)
                .into(btn1);
         ```
     使用方法存在但不限于上述使用方法,具体详细方法如下:


     |模块|方法名|描述|
     |:---|:---|:---:|
     |ColorSelector|defaultColor|默认颜色|
     ||disabledColor|不可点击|
     ||pressedColor|触摸|
     ||selectedColor|选中|
     ||focusedColor|获取焦点|
     ||textType|设置类型:TextColor(默认)、HintTextColor|
     ||build|状态集合ColorStateList|
     ||into|目标View|
     |DrawableSelector|defaultDrawable|默认
      ||disabledDrawable|不可点击|
     ||pressedDrawable|触摸|
     ||selectedDrawable|选中|
     ||focusedDrawable|获取焦点|
     ||build|背景Drawable|
     ||into|目标View|

允许选择当前页面中的节点,并检索当前的x选择器,可在Schneider Electric Tag Manager中使用 X-Selector检索节点选择器,可在Schneider Electric Tag Manager配置器中使用 •要启用/禁用X选择器,请单击工具栏图标 •使用绿色选择器,将当前页面中要选择的元素悬停 •要复制剪贴板中的节点选择器,请右键单击突出显示的元素,然后选择选择器类型:►链接追踪的X选择器:选择一组<a>元素。如果</a> <a>您的选择中</a> <a>没有</a> <a>节点,您将会收到警报 ►动作跟踪的X选择器:使用非链接元素(如按钮)设置点击跟踪。以前的选项表示没有链接时使用 ►提取价值的X选择器:在选择内部选择文本或数字,例如通过销售跟踪(对于这种用法,如果您对数字感兴趣,您不必担心货币或本地分隔符,将被正确格式化) ►区域选择的X选择器:选择任何东西。例如,对于Clickzone或搜索区域有用 •当选择确切区域不可能或难以选择时,选择其中一个内容,然后:►选择父项:将当前选择移到其父项。直到你获得所需的区域 •要显示复制的选择器,请先打开Goog​​le Chrome控制台 •要取消激活,请再次单击工具栏图标,或者在Esc键上键入,或者打开另一个选项卡 ************************************************* X选择器节点语法是对XPath的简化,但是只选择重要的上升器,并以特定的方式选择它们,以便抵抗结构变化:•ParentNode / ChlidNode /.../ MyNode,其中Node可以是: ►id或@id:节点的id►tagName:className [index]:选择带有类型和类的标签(可以为空来检索所有)DIV:row >>选择所有带有“row”类的DIV,方兴未艾 DIV:行[3] >>选择第四个DIV类“行”</a> 支持语言:English (United States)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值