package eu.ttbox.androgister.ui.admin.product;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.graphics.drawable.StateListDrawable;
import android.util.SparseArray;
import android.util.StateSet;
public class ProductUiHelper {
private Context context;
private SparseArray<Drawable> colorDrawables = new SparseArray<Drawable>();
// ===========================================================
// Constructor
// ===========================================================
public ProductUiHelper(Context context) {
super();
this.context = context;
}
private Drawable getCacheBackgroundGradientColor(int color) {
Drawable grad = colorDrawables.get(color);
if (grad == null) {
grad = ProductUiHelper.getGradientDrawable(color);
colorDrawables.put(color, grad);
}
return grad;
}
public Drawable getStateGradientDrawable(int color) {
StateListDrawable state = new StateListDrawable();
// int darkerColor = getColorDarker(color);
// Drawable selected =
// context.getResources().getDrawable(android.R.drawable.a);
Drawable normal = getCacheBackgroundGradientColor(color);
Drawable selected = getCacheBackgroundGradientColor(getColorDarker(color));
// State
state.addState(new int[] { android.R.attr.state_pressed }, selected);
state.addState(new int[] { android.R.attr.state_checked }, selected);
state.addState(new int[] { android.R.attr.state_activated }, selected);
state.addState(StateSet.NOTHING, normal);
return state;
}
// ===========================================================
// Static
// ===========================================================
private static Drawable getGradientDrawable(int color) {
GradientDrawable grad = new GradientDrawable(Orientation.BR_TL, new int[] { color, color - 0x88000000 });
grad.setShape(GradientDrawable.RECTANGLE);
grad.setCornerRadius(10);
return grad;
}
private static int getColorDarker(int color) {
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] *= 0.8f; // value component
int darkerColor = Color.HSVToColor(hsv);
return darkerColor;
}
}