Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DrawableFactory {
- final private static float CORNER_RADIUS = 15;
- final private static int STROKE_WIDTH = 3;
- private static int argbColor;
- private static int getDarker() {
- float hsv [] = new float[3];
- Color.colorToHSV(argbColor, hsv);
- hsv[1] = 0.8f;
- return Color.HSVToColor(hsv);
- }
- private static int getLighter() {
- float hsv [] = new float[3];
- Color.colorToHSV(argbColor, hsv);
- hsv[1] = 0.2f;
- return Color.HSVToColor(hsv);
- }
- private static GradientDrawable getDrawable() {
- GradientDrawable gradientDrawable = new GradientDrawable();
- float density = Resources.getSystem().getDisplayMetrics().density;
- float pxCornerRadius = density * CORNER_RADIUS;
- int pxStrokeWidth = (int)density * STROKE_WIDTH;
- gradientDrawable.setShape(GradientDrawable.RECTANGLE);
- gradientDrawable.setCornerRadius(pxCornerRadius);
- gradientDrawable.setStroke(pxStrokeWidth, getDarker());
- return gradientDrawable;
- }
- private static Drawable getDrawablePressed() {
- GradientDrawable gradientDrawable = getDrawable();
- gradientDrawable.setColor(getLighter());
- return gradientDrawable;
- }
- private static Drawable getDrawableSelected() {
- GradientDrawable gradientDrawable = getDrawable();
- gradientDrawable.setColor(getDarker());
- return gradientDrawable;
- }
- private static Drawable getDrawableEnabled() {
- GradientDrawable gradientDrawable = getDrawable();
- gradientDrawable.setColor(Color.WHITE);
- return gradientDrawable;
- }
- public static StateListDrawable getStateListDrawable(int argbColor) {
- DrawableFactory.argbColor = argbColor;
- StateListDrawable stateListDrawable = new StateListDrawable();
- stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, getDrawablePressed());
- stateListDrawable.addState(new int[]{android.R.attr.state_selected}, getDrawableSelected());
- stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, getDrawableEnabled());
- return stateListDrawable;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement