自己封装的一个工具类

工具类包含的方法:
1.dip到px的转换;
2.2.让代码运行到主进程的方法;
3.3.获取随机颜色的值的方法;
4.4.获取一个带背景颜色的圆角矩形的方法;
5.设置背景选择器的方法;
6.6.生成随机的不重复的id值的方法;
7.7.通过资源id获取资源图片的方法;
8.8.判断是否是主线程的方法;

public class UIUtil {
/**像素转换:
* @param dip 要转换的dip格式的数值;
* @return 转换后的px格式的数值
* */
public static int dip2px(int dip) {
// 通过GoogleApplication的静态方法获取上下文
Context context = MyApplication.getContext();
// 获取密度density
float density = context.getResources().getDisplayMetrics().density;
// dip*density+0.5
int px = (int) (dip * density + 0.5);
return px;
}
/**运行任务在主线程的方法:
* @param task 要执行到主线程的任务代码
* */
public static void runInMainThread(Runnable task){
//判断当前线程(android.os.Process.myTid)是否是主线程 若是,则直接调用task的run方法;task.run();
if (MyApplication.getMainThreadId() == android.os.Process.myTid()) {
task.run();
}else{
//否则 ,获取主线程handler,把task交给主线程post(task)
MyApplication.getMainHandler().post(task);
}
}
/**获取随机颜色的方法:没有黑色及白色
* */
public static int getRandomColor(){
int red = 10 + new Random().nextInt(240);
int green = 10 + new Random().nextInt(240);
int blue = 10 + new Random().nextInt(240);
int rgb = Color.rgb(red, green, blue);
return rgb;
}
/*获取随机大小的方法/
public static int getRandomSize(int min,int max){
int randomSize = min+new Random(max).nextInt();
return randomSize;
}
/**获取一个带背景颜色的圆角矩形的方法:
* 不设置边缘会有一些位置的bug出现
* @param rgb 颜色的值
* */
public static GradientDrawable getGradientDrawable(int rgb) {
//创建图形对象
GradientDrawable drawable = new GradientDrawable();
//定义图形类型为矩形
drawable.setGradientType(GradientDrawable.RECTANGLE);
//定义圆角大小
drawable.setCornerRadius(10.0f);
//定义图形的颜色
drawable.setColor(rgb);
//设置图形的边缘线的宽度和颜色
drawable.setStroke(1, rgb);
//返回图形对象
return drawable;
}
/**设置背景选择器的方法
* @param pressedDrawable 被点击时的背景颜色
* @param normalDrawable 普通状态时的背景颜色
* */
public static StateListDrawable getStateListDrawable(
GradientDrawable pressedDrawable, GradientDrawable normalDrawable) {
//创建选择器类对象
StateListDrawable drawable = new StateListDrawable();
//设置按下状态时的背景
drawable.addState(new int[]{android.R.attr.state_pressed}, pressedDrawable);
//设置默认状态时的背景
drawable.addState(new int[]{}, normalDrawable);
//返回选择器
return drawable;
}
//
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
/*生成随机的不重复的id值的方法/
public static int generateViewId() {
for (;;) {
final int result = sNextGeneratedId.get();
int newValue = result + 1;
if (newValue > 0x00FFFFFF)
newValue = 1;
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
}
/*通过资源id获取资源图片的方法/
public static Drawable getDrawable(int mDrawableForegroudResId) {
return MyApplication.getContext().getResources().getDrawable(mDrawableForegroudResId);
}
/*判断是否是主线程的方法/
public static boolean isInMainThread() {
//判断主线程的id与当前线程的id是否一致
return MyApplication.getMainThreadId() == android.os.Process.myTid();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值