一些关于界面的工具方法

package com.liuxuyang.myapplication.base;

import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;


/**
 * 包含 获取上下文 加载布局 dp px转换 等一些关于界面的工具方法
 * @data: 2015-7-27 下午1:35:57
 *
 */
public class UIUtils {

    private static Toast mToast;

    private static Handler mHandler = new Handler();
    private static Runnable r = new Runnable() {
        public void run() {
            mToast.cancel();
            mToast=null;//toast隐藏后,将其置为null
        }
    };
    /**
     * 当前是否为DEBUG模式
     */
    public static final boolean DEBUG = true;

    /**
     * 全局上下文
     */
    public static MyApplication getContext() {
        return MyApplication.application;
    }

    /**
     * 弹出测试Toast
     *
     * @param str
     */
    public static void showTestToast(String str) {
        if (DEBUG) {
            Toast.makeText(getContext(), str, Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 获取颜色选择器
     */
    public static ColorStateList getColorStateList(int resId) {
        return getContext().getResources().getColorStateList(resId);
    }

    /**
     * 展示Toast
     *
     * @param str
     */
    public static void showToast(String str) {
        mHandler.removeCallbacks(r);
        if (mToast == null) {
            mToast = Toast.makeText(getContext(), str, Toast.LENGTH_SHORT);
        }
        mHandler.postDelayed(r, 1000);
        mToast.show();
//        Toast.makeText(getContext(), str, Toast.LENGTH_SHORT).show();
    }

    /**
     * 全局Handler 消息处理器
     */
    public static Handler getHandler() {
        return MyApplication.getHandler();
    }

    public static boolean isRunOnMainThread() {
        return android.os.Process.myTid() == getMainThreadTid();
    }

    private static int getMainThreadTid() {
        return MyApplication.getMainThreadId();
    }

    /**
     * 在主线程中执行代码
     *
     * @param runnable
     */
    public static void runOnUiThread(Runnable runnable) {
        // 判断当前是否在主线程中
        if (isRunOnMainThread()) {
            // 执行代码
            runnable.run();
        } else {
            post(runnable);
        }
    }

    /**
     * 获取文字数组
     */
    public static String[] getStringArray(int resId) {
        return getResources().getStringArray(resId);
    }

    /**
     * 获取资源
     */
    public static Resources getResources() {
        return getContext().getResources();
    }

    public static void post(Runnable runnable) {
        Handler handler = getHandler();
        handler.post(runnable);
    }

    /**
     * 从主线程looper里面移除runnable
     */
    public static void removeCallbacks(Runnable runnable) {
        getHandler().removeCallbacks(runnable);
    }

    /**
     * 延时在主线程执行runnable
     */
    public static boolean postDelayed(Runnable runnable, long delayMillis) {
        return getHandler().postDelayed(runnable, delayMillis);
    }

    /**
     * dip转换px
     */
    public static int dip2px(int dip) {
        final float scale = getContext().getResources().getDisplayMetrics().density;
        return (int) (dip * scale + 0.5f);
    }

    /**
     * pxz转换dip
     */
    public static int px2dip(int px) {
        final float scale = getContext().getResources().getDisplayMetrics().density;
        return (int) (px / scale + 0.5f);
    }

    /**
     * 加载图片
     */
    public static Drawable getDrawable(int drawableForegroudResId) {

        return UIUtils.getContext().getResources()
                .getDrawable(drawableForegroudResId);
    }

    /**
     * 创建布局
     */
    public static View inflate(int id) {
        return View.inflate(getContext(), id, null);
    }

    /**
     * 如果才有UIUtils.getContext上下文 可能一些特效看不到
     * 创建布局
     */
    public static View inflate(Context context, int id) {
        return View.inflate(context, id, null);
    }


    /**
     * 获取 颜色
     *
     * @param i
     * @return
     */
    public static int getColor(int i) {
        return getContext().getResources().getColor(i);
    }

    /**
     * 将图片资源转化为可显示在TextView等周围的Drawable对象
     *
     * @param imgId
     * @return
     */

    public static Drawable getRoundDrawable(int imgId) {
        Drawable drawable = getResources().getDrawable(imgId);
        if (drawable != null)
            drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
        return drawable;
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobiles) {
        String telRegex = "[1]\\d{10}";//"[1]"代表第1位为数字1"[358]"代表第二位可以为358中的一个,"\\d{9}"代表后面是可以是09的数字,有9位。
        if (TextUtils.isEmpty(mobiles)) return false;
        else return mobiles.matches(telRegex);
    }

    /**
     * 验证密码是否包含数字和字母
     */
    public static boolean isLetterDigit(String str) {
        boolean isDigit = false;//定义一个boolean值,用来表示是否包含数字
        boolean isLetter = false;//定义一个boolean值,用来表示是否包含字母
        for (int i = 0; i < str.length(); i++) {
            if (Character.isDigit(str.charAt(i))) {   //char包装类中的判断数字的方法判断每一个字符
                isDigit = true;
            }
            if (Character.isLetter(str.charAt(i))) {  //char包装类中的判断字母的方法判断每一个字符
                isLetter = true;
            }
        }
        String regex = "^[a-zA-Z0-9]+$";
        boolean isRight = isDigit && isLetter && str.matches(regex);
        return isRight;

    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值