您的位置:首页 > 其它

自己封装的一个工具类

2016-06-15 16:49 429 查看
/**工具类:包含两个方法.1.dip到px的转换;2.让代码运行到主进程的方法;3.获取随机颜色的值的方法;4.获取一个带背景颜色的圆角矩形的方法;

 * 5.设置背景选择器的方法;6.生成随机的不重复的id值的方法;7.通过资源id获取资源图片的方法;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;

            }

        }
}
//----------------widget/ProgressArc类中用到的2个方法-----------------------
/**通过资源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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息