Android常用工具方法

219 阅读2分钟

< 屏幕相关的工具类 >

一. 准备工作

  • (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);