登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

使用kotlin-dsl构建常用drawable实例

xiazunyang   2022-04-07 22:34   收藏

drawable-dsl

用于构建常用drawable实例的kotlin-dsl框架,包括shaperipple以及selectordrawable实例;顺便也支持创建颜色相关的selector实例。

  • shape(GradientDrawable)
val gradientDrawable = shape(Shape.RECTANGLE) {
    //corners(8f)
    corners {
        topLeft = 8f
        topRight = 8f
    }
    //padding(8)
    padding {
        top = 8
        bottom = 8
    }
    //solid(Color.parseColor("#FAF0E6"))
    gradient {
        startColor = Color.RED
        centerColor = Color.GREEN
        endColor = Color.BLUE
    }
}

  • ripple(RippleDrawable)
val rippleDrawable = ripple {
    color(Color.WHITE)
    //content = AppCompatResources.getDrawable(context, R.drawable.ic_launcher_background)
    content {
        AppCompatResources.getDrawable(context, R.drawable.ic_launcher_background)!!
    }
}
  • selector(StateListDrawable)
val stateListDrawable = selector {
    // 一种状态
    addState(State.PRESSED) {
        shape {
            corners(8f)
            solid(Color.parseColor("#FFA500"))
        }
    }
    // 多种状态的组合,可通过`非`和`加`操合并更多状态
    addState(State.SELECTED + !State.ENABLED) {
        shape {
            corners(8f)
            solid(Color.parseColor("#FAF0E6"))
        }
    }
    // 默认状态
    defState {
        shape {
            corners(8f)
            solid(Color.parseColor("#FF8C00"))
        }
    }
}
  • colorSelector(ColorStateList)
// 与StateListDrawable相同,可通过操作符组合更多状态
val colorStateList = colorSelector {
    addState(!State.ENABLED, Color.GRAY)
    addState(State.PRESSED, Color.WHITE)
    defState(Color.BLACK)
}

项目地址:https://github.com/xiazunyang/drawable.dsl.git