Advertisement
van9petryk

Untitled

May 21st, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. class DrawableFactory {
  2.     final private static float CORNER_RADIUS = 15;
  3.     final private static int STROKE_WIDTH = 3;
  4.     private static int argbColor;
  5.  
  6.     private static int getDarker() {
  7.         float hsv [] = new float[3];
  8.         Color.colorToHSV(argbColor, hsv);
  9.         hsv[1] = 0.8f;
  10.         return Color.HSVToColor(hsv);
  11.     }
  12.  
  13.     private static int getLighter() {
  14.         float hsv [] = new float[3];
  15.         Color.colorToHSV(argbColor, hsv);
  16.         hsv[1] = 0.2f;
  17.         return Color.HSVToColor(hsv);
  18.  
  19.     }
  20.  
  21.     private static GradientDrawable getDrawable() {
  22.         GradientDrawable gradientDrawable = new GradientDrawable();
  23.         float density = Resources.getSystem().getDisplayMetrics().density;
  24.         float pxCornerRadius = density * CORNER_RADIUS;
  25.         int pxStrokeWidth = (int)density * STROKE_WIDTH;
  26.         gradientDrawable.setShape(GradientDrawable.RECTANGLE);
  27.         gradientDrawable.setCornerRadius(pxCornerRadius);
  28.         gradientDrawable.setStroke(pxStrokeWidth, getDarker());
  29.         return gradientDrawable;
  30.     }
  31.  
  32.     private static Drawable getDrawablePressed() {
  33.         GradientDrawable gradientDrawable = getDrawable();
  34.         gradientDrawable.setColor(getLighter());
  35.         return gradientDrawable;
  36.     }
  37.  
  38.     private static Drawable getDrawableSelected() {
  39.         GradientDrawable gradientDrawable = getDrawable();
  40.         gradientDrawable.setColor(getDarker());
  41.         return gradientDrawable;
  42.     }
  43.  
  44.     private static Drawable getDrawableEnabled() {
  45.         GradientDrawable gradientDrawable = getDrawable();
  46.         gradientDrawable.setColor(Color.WHITE);
  47.         return gradientDrawable;
  48.     }
  49.  
  50.     public static StateListDrawable getStateListDrawable(int argbColor) {
  51.         DrawableFactory.argbColor = argbColor;
  52.         StateListDrawable stateListDrawable = new StateListDrawable();
  53.         stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, getDrawablePressed());
  54.         stateListDrawable.addState(new int[]{android.R.attr.state_selected}, getDrawableSelected());
  55.         stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, getDrawableEnabled());
  56.         return stateListDrawable;
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement