用代码动态生成图片状态选择器(背景颜色还可以有渐变的效果)
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
/**
* 图片工具类
*/
public class DrawableUtil {
private DrawableUtil() {
}
/**
* 获取一个圆角矩形的图片
*
* @param rgb 图片颜色rgb格式
* @param radis 圆角的弧度大小
* @return
*/
public static Drawable generateDrawable(int rgb, float radis) {
GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);//设置形状为矩形
drawable.setColor(rgb);//设置图片颜色
drawable.setCornerRadius(radis);//设置圆角
return drawable;
}
/**
* 获取一个背景可渐变的图片Selector
*
* @param pressed 按压状态下的bg
* @param normal 默认状态的bg
* @return
*/
public static Drawable generateSelector(Drawable pressed, Drawable normal) {
//多种状态的多种图片集合,对应xml格式的selector
StateListDrawable drawable = new StateListDrawable();
//添加多种状态下的图片
drawable.addState(new int[]{android.R.attr.state_pressed}, pressed);
drawable.addState(new int[]{android.R.attr.state_selected}, pressed);
drawable.addState(new int[]{}, normal);
//设置状态选择器的过度动画
if (Build.VERSION.SDK_INT>10){
drawable.setEnterFadeDuration(300);
drawable.setExitFadeDuration(300);
}
return drawable;
}
}
获取一个随机的rgb颜色
import android.graphics.Color;
import java.util.Random;
/**
* 颜色工具类
*/
public class ColorUtil {
private ColorUtil(){
}
/**
* 获取一个随机的rgb颜色
* @return
*/
public static int getRandomColor(){
Random random = new Random();
int red = random.nextInt(150)+30;//0-190
int green = random.nextInt(150)+30;
int blue = random.nextInt(150)+30;
return Color.rgb(red, green, blue);
}
}