自己封装的一个工具类
2016-11-16 11:30
106 查看
工具类包含的方法:
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();
}
}
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();
}
}
相关文章推荐
- 闲来无事,将自己收集到的工具类封装了下,做了一个lib,写了个简单的mvp,初学者可以看看
- 自己封装的一个工具类
- 自己简单的封装一个OKHttp工具类
- 整理一个自己用的Ajax例子,封装,调用!
- 自己封装的一个 servlet 和 applet 序列化通信的好例子
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 自己封装的一个文件目录操作用户对象
- [C#] 自己封装的一个数据库访问类 让ado.net 用起来和ado一样
- 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
- D3D初始化环境 自己封装的一个简单的类
- 自己封装和总结的一个JAX函数
- 自己封装了一个Java数据库访问管理类
- 一个自己封装的日期时间操作的用户对象
- 自己封装的一个 TCP 套接字基类
- ado.net调用存储过程的一个封装类(网上找的不怕只怕自己不去理解)
- 自己实现的一个directxinput键盘的封装
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象[修订081217]
- 自己写的一个小的日期工具类
- 自己编写的一个Json工具类,实现了反射将整个Object转换为Json对象的功能,支持Hibernate的延迟加载对象
- 自己写一个类,封装后,用来C#数据库连接模块