public class DrawableUtil {
/**
* 定义一个shape资源
*
* @param rgb
* @param corneradius
* @return
*/
public static GradientDrawable getDrawable(int rgb, int corneradius) {
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(rgb);
gradientDrawable.setGradientType(GradientDrawable.RECTANGLE);
gradientDrawable.setCornerRadius(corneradius);
gradientDrawable.setStroke(UIUtils.dp2px(1), rgb);
return gradientDrawable;
}
public static StateListDrawable getSelector(Drawable normalDrawable,Drawable pressDrawable) {
StateListDrawable stateListDrawable = new StateListDrawable();
//给当前的颜色选择器添加选中图片指向状态,未选中图片指向状态
stateListDrawable.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, pressDrawable);
stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, normalDrawable);
//设置默认状态
stateListDrawable.addState(new int[]{}, normalDrawable);
return stateListDrawable;
}
}
运用
int r = random.nextInt(210);
int g = random.nextInt(210);
int b = random.nextInt(210);
tv.setBackground(DrawableUtil.getSelector(DrawableUtil.getDrawable(Color.rgb(r, g, b), UIUtils.dp2px(5)), DrawableUtil.getDrawable(Color.WHITE, UIUtils.dp2px(5))));