< 屏幕相关的工具类 >
一. 准备工作
- (1)给工具类取个响亮的名字吧:WindowUtil,它会具备以下方法:
dip转px
px转dip
获取屏幕Window宽度
获取屏幕Window高度
- (2)先定义一下Application(其实我是想让下边的代码精简一点)
Application appLic = MyApplication.getInstance();
MyApplication的定义自己去Manifest中声明一下
二. 具体方法
- (1)dip转px(常用在代码中设置dp值)
public static int dip2px(float dip) {
float f = appLic.getResources().getDisplayMetrics().density;
return (int) (dip * f + .5f);
}
- (2)px转dip
public static int px2dip(float px) {
float f = appLic.getResources().getDisplayMetrics().density;
return (int) (px / f);
}
- (3)获取屏幕宽度(像素)
public static int getWindowWidth() {
DisplayMetrics dm = appLic.getResources().getDisplayMetrics();
return dm.widthPixels;
}
- (3)获取屏幕高度(像素)
public static int getWindowHeight() {
DisplayMetrics dm = appLic.getResources().getDisplayMetrics();
return dm.heightPixels;
}
三. 工具类的使用
因为方法基于Application,所以可以在任意Activity、View等位置使用
int abc = WindowUti.getXXX();
//
/ 掘金文章的空格怎么整出来啊? /
//
< 触发相关的工具类 >
一. 准备工作
- (1)给工具类取个响亮的名字吧:AppUtil,它会具备以下方法:
//
二. 具体方法
- (1)防止连续快速点击触发重复事件
public static boolean isQuickClick(int timeLength) {
long time = System.currentTimeMillis();
long timeD = time - sLastClickTime;
if (0 < timeD && timeD < timeLength) {
return true;
}
//假装已经声明过变量 private static long sLastClickTime;
sLastClickTime = time;
return false;
}
注释:使用方式
//防止快速连续点击banner,间隔时长是timeLength秒
if (AppUtils.isQuickClick()) {
return;
}
< Handler相关的工具类 >
一. 准备工作
- (1)给工具类取个响亮的名字吧:MyThreadHandler,它会具备以下方法:
//
- (2)首先创建一个基于Ui线程的Looper的Handler:
private static Handler sUiHandler = new Handler(Looper.getMainLooper());
二. 具体方法
- (1)假如我想延迟执行一段代码(比如在Activity生命周期方法中获取View的尺寸)
public final static boolean postDelayed(Runnable r, long delayMillis) {
if (sUiHandler == null)
return false;
return sUiHandler.postDelayed(r, delayMillis);
}
注释:使用方式
//把mMyRunnable这个Runnable延迟1秒执行
MyThreadHandler.postDelayed(mMyRunnable, 1 * 1000);