Android开发笔记之代码动态生成图片状态选择器

用代码动态生成图片状态选择器(背景颜色还可以有渐变的效果)

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值