This commit is contained in:
lyr
2022-05-13 19:07:06 +08:00
parent 1ae37710ca
commit ccd6a866dc
30 changed files with 356 additions and 140 deletions

View File

@ -1,5 +1,6 @@
package com.gh.gamecenter.common.view
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
import android.graphics.LinearGradient
@ -39,7 +40,10 @@ object DrawableView {
}
@JvmStatic
fun getOvalDrawable(@ColorRes colorId: Int, radius: Float = 999F): Drawable {
fun getOvalDrawable(
@ColorRes colorId: Int,
radius: Float = 999F
): Drawable {
val drawable = GradientDrawable()
drawable.setColor(ContextCompat.getColor(HaloApp.getInstance(), colorId))
drawable.cornerRadius = DisplayUtils.dip2px(radius).toFloat()
@ -47,28 +51,58 @@ object DrawableView {
}
@JvmStatic
fun getOvalSelectorStyle(@ColorRes defaultColorId: Int, @ColorRes checkColorId: Int): StateListDrawable {
fun getOvalDrawable(
@ColorRes colorId: Int,
radius: Float = 999F,
context: Context = HaloApp.getInstance()
): Drawable {
val drawable = GradientDrawable()
drawable.setColor(ContextCompat.getColor(context, colorId))
drawable.cornerRadius = DisplayUtils.dip2px(radius).toFloat()
return drawable
}
@JvmStatic
fun getOvalSelectorStyle(
@ColorRes defaultColorId: Int,
@ColorRes checkColorId: Int,
context: Context = HaloApp.getInstance()
): StateListDrawable {
val res = StateListDrawable()
res.addState(intArrayOf(android.R.attr.state_checked), getOvalDrawable(checkColorId))
res.addState(intArrayOf(), getOvalDrawable(defaultColorId))
res.addState(intArrayOf(android.R.attr.state_checked), getOvalDrawable(checkColorId, context = context))
res.addState(intArrayOf(), getOvalDrawable(defaultColorId, context = context))
return res
}
@JvmStatic
fun getSelectorColorStyle(@ColorRes defaultColorId: Int, @ColorRes checkColorId: Int): ColorStateList {
fun getSelectorColorStyle(
@ColorRes defaultColorId: Int,
@ColorRes checkColorId: Int,
context: Context = HaloApp.getInstance()
): ColorStateList {
val states = arrayOf(
intArrayOf(-android.R.attr.state_checked),
intArrayOf(android.R.attr.state_checked))
intArrayOf(-android.R.attr.state_checked),
intArrayOf(android.R.attr.state_checked)
)
val colors = intArrayOf(
ContextCompat.getColor(HaloApp.getInstance(), defaultColorId),
ContextCompat.getColor(HaloApp.getInstance(), checkColorId))
ContextCompat.getColor(context, defaultColorId),
ContextCompat.getColor(context, checkColorId)
)
return ColorStateList(states, colors)
}
@JvmStatic
fun getStrokeDrawable(@ColorRes colorCode: Int, strokeWidth: Float = 1F, radius: Float = 999F): Drawable {
fun getStrokeDrawable(
@ColorRes colorCode: Int,
strokeWidth: Float = 1F,
radius: Float = 999F,
context: Context = HaloApp.getInstance()
): Drawable {
val drawable = GradientDrawable()
drawable.setStroke(strokeWidth.dip2px(), ContextCompat.getColor(HaloApp.getInstance(), colorCode))
drawable.setStroke(
strokeWidth.dip2px(),
ContextCompat.getColor(context, colorCode)
)
drawable.cornerRadius = radius
return drawable
}
@ -89,30 +123,60 @@ object DrawableView {
@JvmStatic
fun getGradientDrawable(width: Int, startColor: Int, endColor: Int): Drawable {
val drawable = ShapeDrawable(RectShape())
drawable.paint.shader = LinearGradient(0f, 0F, width.toFloat(), 0F, startColor, endColor, Shader.TileMode.REPEAT)
drawable.paint.shader = LinearGradient(
0f,
0F,
width.toFloat(),
0F,
startColor,
endColor,
Shader.TileMode.REPEAT
)
return drawable
}
@JvmStatic
fun getCornerDrawable(color: Int, radiusLT: Float, radiusRT: Float, radiusRB: Float, radiusLB: Float):Drawable{
fun getCornerDrawable(
color: Int,
radiusLT: Float,
radiusRT: Float,
radiusRB: Float,
radiusLB: Float
): Drawable {
val drawable = GradientDrawable()
drawable.shape = GradientDrawable.RECTANGLE
drawable.setColor(color)
val radiusEach = floatArrayOf(radiusLT.dip2px().toFloat(), radiusLT.dip2px().toFloat(), radiusRT.dip2px().toFloat(), radiusRT.dip2px().toFloat(),
radiusRB.dip2px().toFloat(), radiusRB.dip2px().toFloat(), radiusLB.dip2px().toFloat(), radiusLB.dip2px().toFloat())
val radiusEach = floatArrayOf(
radiusLT.dip2px().toFloat(),
radiusLT.dip2px().toFloat(),
radiusRT.dip2px().toFloat(),
radiusRT.dip2px().toFloat(),
radiusRB.dip2px().toFloat(),
radiusRB.dip2px().toFloat(),
radiusLB.dip2px().toFloat(),
radiusLB.dip2px().toFloat()
)
drawable.cornerRadii = radiusEach
return drawable
}
@JvmStatic
fun getCornerGradientDrawable(startColor: Int, endColor: Int, radius: Float = 999F): Drawable {
val drawable = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, intArrayOf(startColor, endColor))
val drawable = GradientDrawable(
GradientDrawable.Orientation.LEFT_RIGHT,
intArrayOf(startColor, endColor)
)
drawable.cornerRadius = DisplayUtils.dip2px(radius).toFloat()
return drawable
}
@JvmStatic
fun getGradientDrawable(startColor: Int, endColor: Int, orientation: GradientDrawable.Orientation = GradientDrawable.Orientation.LEFT_RIGHT, radius: Float = 999F): Drawable {
fun getGradientDrawable(
startColor: Int,
endColor: Int,
orientation: GradientDrawable.Orientation = GradientDrawable.Orientation.LEFT_RIGHT,
radius: Float = 999F
): Drawable {
val drawable = GradientDrawable(orientation, intArrayOf(startColor, endColor))
drawable.cornerRadius = DisplayUtils.dip2px(radius).toFloat()
return drawable