FSelector-解放双手,提高编码效率,减少大量的selecor文件

FSelector

欢迎使用 Flyabbit ? 全家桶

FSelector quick get Selector by no xml

功能

  • 减少shape和selector文件
  • 快速,高效,低耗,无入侵,精小
  • 简易的整合,轻量级,高扩展
  • 基本没有依赖于任何的三方库
  • 包括了xml所能做到的大部分功能,也添加了部分xml不能实现的功能。

地址: https://github.com/chengzichen/FSelector

安装

模块 FSelector
最新版本
  • 方式一:

Step 1. 在根目录的gradle文件中配置

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

step2 添加依赖:

dependencies {
                    implementation 'com.github.chengzichen:FSelector:release1.0.2'
            }

效果

图片名称 图片名称

用途

  • 圆角背景

    FSelector.with(tvtext1)
                    .addDrawable().circleAngle(dp2px(15)).bgColor(getColors(R.color.clr_fb720e))
                    .create()
                    .bind();
  • 带边框的圆角背景

    FSelector.with(tvtext2)
                    .addDrawable().circleAngle(dp2px(15)).bgColor(getColors(R.color.clr_fb720e))
                    .strokeClr(Color.BLUE).stokeWidth(dp2px(2))
                    .create()
                    .bind();
  • 圆形背景

    FSelector.with(mTvSelectRoundBgText)
                .addDrawable()
                .shapeType(FSelector.OVAL)
                .size(dp2px(80), dp2px(80))
                .useLevel(true)
                .stokeWidth(dp2px(2))
                .strokeClr(getColors(R.color.colorPrimary))
                .bgColor(getColors(R.color.clr_ff00d2e0))
                .strokeDashWidth(dp2px(10))//虚线
                .strokeDashGap(dp2px(5))//虚线
                .create()
                .bind();
  • 圆角选择器

      FSelector.with(tvtext3)
                    .addDrawable(STATE_PRESSED).circleAngle(dp2px(15)).bgColor(getColors(R.color
                    .clr_fb720e))
                    .create()
                    .addDrawable().circleAngle(dp2px(15)).bgColor(getColors(R.color.clr_cdcdcd))
                    .create()
                    .bind();
  • 圆角带边框选择器

    FSelector.with(tvtext4)
                    .addDrawable().circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_f6f6f6))
                    .stokeWidth(dp2px(1)).strokeClr(getColors(R.color.clr_cdcdcd)).create()
                    .addDrawable(STATE_PRESSED).circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_fffcf7))
                    .stokeWidth(dp2px(1)).strokeClr(getColors(R.color.clr_fb720e)).create()
                    .bind();
  • 圆角虚线选择器

    FSelector.with(tvtext5)
                .addDrawable().circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_f6f6f6))
                .stokeWidth(dp2px(1)).strokeClr(getColors(R.color.clr_cdcdcd))
                .strokeDashWidth(dp2px(10))
                .strokeDashGap(dp2px(5))
                .create()
                .addDrawable(STATE_PRESSED).circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_fffcf7))
                .stokeWidth(dp2px(1))
                .strokeClr(getColors(R.color.clr_fb720e))
                .strokeDashWidth(dp2px(10))
                .strokeDashGap(dp2px(5))
                .create()
                .bind();
  • 圆形,背景色/边框色/字体色改变

    FSelector.with(mTvSelectRoundBgText)//mTvSelectRoundBgText 必需为 textview
                .addDrawable()
                .shapeType(FSelector.OVAL)
                .size(dp2px(80), dp2px(80))
                .useLevel(true)
                .stokeWidth(dp2px(2))
                .strokeClr(getColors(R.color.colorPrimary))
                .bgColor(getColors(R.color.clr_ff00d2e0))
                .strokeDashWidth(dp2px(10))//虚线
                .strokeDashGap(dp2px(5))//虚线
                .textStateColor(getColors(R.color.clr_FFFFFFFF))
                .create()
                .addDrawable(FSelector.State.STATE_PRESSED)
                .shapeType(FSelector.OVAL)
                .size(dp2px(80), dp2px(80))
                .useLevel(true)
                .stokeWidth(dp2px(2))
                .strokeClr(getColors(R.color.clr_ff658598))
                .bgColor(getColors(R.color.clr_ff00d2e0))
                .strokeDashWidth(dp2px(10))//虚线
                .strokeDashGap(dp2px(5))//虚线
                .textStateColor(getColors(R.color.clr_6e6e6e))
                .create()
                .bind();
  • 自定义背景选择器(xml 无法实现)

    
     RightDrawable selectDrawable = new RightDrawable();
            selectDrawable.setmPantWidth(dp2px(1));
            FSelector.with(tvtext6)
                    .addDrawable().circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_f6f6f6))
                    .strokeDashWidth(dp2px(10))
                    .strokeDashGap(dp2px(5))
                    .stokeWidth(dp2px(3)).strokeClr(getColors(R.color.clr_cdcdcd)).create()
                    .addDrawable(STATE_PRESSED).circleAngle(dp2px(5)).stateDraw(selectDrawable)
                    .stokeWidth(dp2px(3)).strokeClr(Color.RED).create()
                    .bind();
  • 任何图片背景生成圆角

     RoundedBitmapDrawable shapeBitmapDrawable=    new RoundedBitmapDrawable();
            shapeBitmapDrawable.setBitmap(this.getResources(),R.drawable.ic_drawer_setting);
            FSelector.with(tvtext7)
                    .addDrawable().circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_f6f6f6))
                    .stokeWidth(dp2px(5)).strokeClr(getColors(R.color.clr_cdcdcd)).create()
                    .addDrawable(STATE_PRESSED).circleAngle(dp2px(5))
                    .strokeDashWidth(dp2px(10))
                    .strokeDashGap(dp2px(5))
                    .stateDraw(shapeBitmapDrawable)
                    .stokeWidth(dp2px(5)).strokeClr(Color.RED).create()
                    .bind();
    
  • 创建一个选择器 Drawable

    Drawable drawable= FSelector.with(tvtext4)
                .addDrawable().circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_f6f6f6))
                .stokeWidth(dp2px(1)).strokeClr(getColors(R.color.clr_cdcdcd)).create()
                .addDrawable(STATE_PRESSED).circleAngle(dp2px(5)).bgColor(getColors(R.color.clr_fffcf7))
                .stokeWidth(dp2px(1)).strokeClr(getColors(R.color.clr_fb720e)).create()
                .build();

API说明

  1. with(context or view)              //context or view,put view to bind 
  2. addDrawable(int type) //根据状态添加 drawable

        WINDOW_FOCUSED(android.R.attr.state_window_focused),//true,当此activity获得焦点在最前面时显示该图片;false,当没在最前面时显示该图片。
        STATE_ENABLED(android.R.attr.state_enabled),//当该组件能使用时显示该图片;false,当该组件不能使用时显示该图片
        STATE_CHECKABLE(android.R.attr.state_checked),//当CheckBox能使用时显示该图片;false,当CheckBox不能使用时显示该图片
        STATE_CHECKED(android.R.attr.state_checked),//true,当CheckBox选中时显示该图片;false,当CheckBox为未选中时显示该图片
        STATE_SELECTED(android.R.attr.state_selected),//true 选择时显示的图片;false 为选择时的图片(例如用在Tab)
        STATE_PRESSED(android.R.attr.state_pressed),//true,当被点击时显示该图片;false没被按下时显示图片 ==click
        STATE_FOCUSED(android.R.attr.state_focused),//获取焦点
        STATE_ACTIVE(android.R.attr.state_active),
        STATE_DRAG_HOVERED(android.R.attr.state_drag_hovered),//true 能够drop 或者 drag 鼠标指针移动到该位置图片
        STATE_DRAG_CAN_ACCEPT(android.R.attr.state_drag_can_accept),//true 能够dorp 或者 drag 时图片
        STATE_ACTIVATED(android.R.attr.state_activated);

  3. addDrawable()                          // 添加一个默认的Drawable, 默认状态                            
  4. circleAngle( px )                      //四个角的圆角大小
  5. topLeftCA(px)                          //左上角弧度
  6. topRigthCA(px)                         //右上角弧度
  7. btLeftCA(px)                           //左下角度
  8. btRightCA(px)                          //右下角
  9. bgColor(color)                         //单个背景的颜色
  10. stokeWidth(px)                        //边框宽度
  11. strokeClr(color)                      //边框颜色
  12. strokeDashWidth()                     //虚线中实线的长度
  13. strokeDashGap()                       //虚线间隔的长度
  14. addState(int)                         //添加 drawabe 的状态,与 addDrawable(int type)覆盖互斥
  15. shapeType(@Shape int shapeType)       //drawabe 类型  ,圆形,椭圆,矩形,线...
  16. size(int width, int height)           //设置宽高
  17. useLevel(boolean useLevel)            //是否使用标准圆
  18. textStateColor(@ColorInt int textColor)//当前状态下的字体颜色,只有当 view 为 TextView 的时候才生效
  15. create()                              //创建一个Drawable放入 shape or selector
  16. build()                               //返回一个Drawable 作为 shape or selector
  17. bind()                                //将返回的Drawable bind 到 view 中

TODO

添加更多的自定义背景

作者

更新日志

  • 1.0.0 : 正式版本1
  • 1.0.1 : 添加边框虚线
  • 1.0.2 : 添加椭圆,以及圆形,textview字体状态颜色,设置大小

Flyabbit系列

  • Flyabbit 快速实现MVP组件化
  • FMVP 快速实现 mvp
  • component 快速实现 组件化
  • RxBus rxjava 配合使用的时间总线

猜你喜欢

转载自blog.csdn.net/chengzichen_/article/details/82020047