android常用工具类集合

本文汇总了在Android开发过程中常用的工具类,包括日期时间操作、网络状态检测、图片资源加载、单位转换等功能,旨在提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文集合本人在开发中经常用到的工具类(待续):
1、获取系统日期时间
更详细的使用详见:[日期时间操作类工具]http://blog.youkuaiyun.com/xiawj8957/article/details/52385628
2、日期格式字符串转换成时

public static String date2TimeStamp(String date_str) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd                       HH:mm:ss", Locale.US);
            return String.valueOf(sdf.parse(date_str).getTime() / 1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

3、检查网络是否可用

public static boolean isNetworkConnected(Context context) {
        if (context != null) {
            ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            if (mConnectivityManager != null) {
                // 获取网络连接管理的对象
                NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
                if (info != null && info.isConnected()) {
                    // 判断当前网络是否已经连接
                    if (info.getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

4、将String类型的数组转化为逗号间隔字符串形式

public static String stringArrayToString(String[] stringArray) {
        if (stringArray == null || stringArray.length <= 0) {
            return null;
        }
        return Arrays.toString(stringArray).replaceAll("^\\[| |\\]$", "");
}

5、最省内存方式读取图片资源

public static Bitmap readBitMap(Context context, int resId) {
        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        // 获取资源图片
        InputStream is = context.getResources().openRawResource(resId);
        return BitmapFactory.decodeStream(is, null, opt);
    }

6、判断字符串是否为空

public class AppsCommonUtil {
    public static boolean stringIsEmpty(String string) {
        if (string == null) {
            return true;
        }
        if (string.trim().equals("")  || string.trim().equals("null")) {
            return true;
        }
        return false;
    }

7、判断字符串是否为数字

public static boolean isNumeric1(String str){
          Pattern pattern = Pattern.compile("[0-9]*");
          return pattern.matcher(str).matches();
         }

8、判断是否是正确的邮箱格式

public static boolean matchEmail(String email) {
        // String strPattern =
        // "^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";
        String strPattern = "^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]*@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$";
        Pattern p = Pattern.compile(strPattern);
        Matcher m = p.matcher(email);
        return m.matches();
    }

9、判断是否是手机格式

public static boolean matchPhone(String phone) {
        boolean isValid = false;
        // String expression =
        // "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))";
        String expression = "((^(10|11|12|13|14|15|16|17|18|19)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))";
        CharSequence inputStr = phone;
        Pattern pattern = Pattern.compile(expression);
        Matcher matcher = pattern.matcher(inputStr);
        if (matcher.matches()) {
            isValid = true;
        }
        return isValid;
    }

10、隐藏软键盘

public static void hideKeyboard(Context context, IBinder binder) {
        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(binder, 0);
    }

11、android中px、dp、sp等转换

public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    public static int dip2px(Context context, float dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }

    public static int px2sp(Context context, float pxValue) {
        final float fontScale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / fontScale + 0.5f);
    }

    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }

    public static float applyDimension(Context context,int unit, float value) {
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f / 72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f / 25.4f);
        }
        return 0;
    }

12、全局Toast

private static Toast toast;
@SuppressLint("ShowToast")
    private static void getToast(Context context) {
        if (toast == null) {
            toast = new Toast(context);
        }
        if (view == null) {
            view = Toast.makeText(context, "", Toast.LENGTH_SHORT).getView();
        }
        toast.setView(view);
    }
    //全局Toast
    public static void showToast(Context context, CharSequence msg,
                                 int duration) {
        try {
            getToast(context);
            toast.setText(msg);
            toast.setDuration(duration);
            toast.show();
        } catch (Exception e) {
            Log.d("xwj", e.getMessage());
        }
    }

自定义Toast

private static Toast toast;
public static void showCustomerToast(final Context c, String msg, int duration) {
        //获取LayoutInflater对象,该对象可以将布局文件转换成与之一致的view对象
        LayoutInflater inflater = LayoutInflater.from(c);
        //将布局文件转换成相应的View对象
        View layout = inflater.inflate(R.layout.activity_flaut_notify, null);
        //从layout中按照id查找TextView对象
        TextView textView = (TextView) layout.findViewById(R.id.tip_notify);

        //实例化一个Toast对象
        if(null==toast) {
            //设置TextView的text内容
            textView.setText(msg);
            toast = new Toast(c.getApplicationContext());
            toast.setDuration(duration);
            toast.setGravity(Gravity.BOTTOM, 0, 360);
            toast.setView(layout);
            toast.show();
        }else{
            //设置TextView的text内容
            textView.setText(msg);
            toast.setDuration(duration);
            toast.setGravity(Gravity.BOTTOM, 0, 360);
            toast.setView(layout);
            toast.show();
        }
    }

13、获取android系统版本号

public static int getSDKVersionNumber() {  
                int sdkVersion;  
                try {  
                    sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);  
                } catch (NumberFormatException e) {  
                    sdkVersion = 0;  
                }  
                return sdkVersion;
            }  

14、获取图片所在文件夹

public static String getDir(String path) {
        String subString = path.substring(0, path.lastIndexOf('/'));
        return subString.substring(subString.lastIndexOf('/') + 1,
                subString.length());
    }

15、判断GPS是否可用

public static boolean isUseableGps(Context mcon) {
        LocationManager alm = (LocationManager) mcon
                .getSystemService(Context.LOCATION_SERVICE);
        if (alm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

            Log.d("xwj", "GPS可用");
            return true;
        } else {
            Log.d("xwj", "GPS不可用");
            return false;
        }
    }

16、获取程序版本号

public static String getVersionName(Context mcon) {
        // 获取packagemanager的实例
        PackageManager packageManager = mcon.getPackageManager();
        // getPackageName()是你当前类的包名,0代表是获取版本信息
        try {
            PackageInfo packInfo = null;
            packInfo = packageManager.getPackageInfo(mcon.getPackageName(), 0);
            String version = packInfo.versionName;

            Log.d("xwj", "版本号:" + version);
            return version;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

17、获取网速

private static boolean isFastMobileNetwork(Context context) {
        TelephonyManager telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        switch (telephonyManager.getNetworkType()) {
        case TelephonyManager.NETWORK_TYPE_1xRTT:
            return false; // ~ 50-100 kbps
        case TelephonyManager.NETWORK_TYPE_CDMA:
            return false; // ~ 14-64 kbps
        case TelephonyManager.NETWORK_TYPE_EDGE:
            return false; // ~ 50-100 kbps
        case TelephonyManager.NETWORK_TYPE_EVDO_0:
            return true; // ~ 400-1000 kbps
        case TelephonyManager.NETWORK_TYPE_EVDO_A:
            return true; // ~ 600-1400 kbps
        case TelephonyManager.NETWORK_TYPE_GPRS:
            return false; // ~ 100 kbps
        case TelephonyManager.NETWORK_TYPE_HSDPA:
            return true; // ~ 2-14 Mbps
        case TelephonyManager.NETWORK_TYPE_HSPA:
            return true; // ~ 700-1700 kbps
        case TelephonyManager.NETWORK_TYPE_HSUPA:
            return true; // ~ 1-23 Mbps
        case TelephonyManager.NETWORK_TYPE_UMTS:
            return true; // ~ 400-7000 kbps
        case TelephonyManager.NETWORK_TYPE_EHRPD:
            return true; // ~ 1-2 Mbps
        case TelephonyManager.NETWORK_TYPE_EVDO_B:
            return true; // ~ 5 Mbps
        case TelephonyManager.NETWORK_TYPE_HSPAP:
            return true; // ~ 10-20 Mbps
        case TelephonyManager.NETWORK_TYPE_IDEN:
            return false; // ~25 kbps
        case TelephonyManager.NETWORK_TYPE_LTE:
            return true; // ~ 10+ Mbps
        case TelephonyManager.NETWORK_TYPE_UNKNOWN:
            return false;
        default:
            return false;
        }
    }

18、图片下载显示工具类
详见:http://blog.youkuaiyun.com/xiawj8957/article/details/52385772


丰富的工具类框架 包含常用工具类方便快速开发 持续更新中 可直接使用implementation 引入使用 2018.9.17 工具类集合 MLog工具类 日期获取工具类 网络检查工具类 权限检查工具类 MD5工具类 日志保存工具类 SheetDialog 底部弹出框 LogcatHelper.getInstance(this).start(filePath); 开启保存日志 LogcatHelper.getInstance(this).stop(); 停止保存日志 2018.9.18 添加检查工具类 图片工具类 屏幕工具类 存储工具类 正则校验工具类 String工具类 Toast工具类 自定义圆形imageView (CircleImageView) 自定义loadingDialog 自定义带旋转动画的loadingDialog 2018.10.27 修改Toast工具类 添加可以在服务中进行提示的toast 添加设备信息工具类 添加时间管理工具类 2018.11.13 修改屏幕工具类 添加dpi px sp 等转换方法 添加button防多点工具类 添加文件读写工具类 添加glide网络图片加载工具类 添加wifi操作工具类 2018.1.3 丰富了手机工具类的方法集 添加蓝牙工具类方法集、蓝牙扫描回调接口 wifi工具类添加连接指令wifi方法 2018.1.9 修复一些方法调用方式 手机工具类添加手机电量监听,添加获取本机开发这模式开关 添加测试工程 蓝牙工具类添加蓝牙工具类方法 wifi工具类优化wifi工具类扫描结果 2018.1.25 添加下载模块 支持断点下载,多任务下载 删除下载 添加下载模块测试用例 2018.2.20 优化工具类调用 wifi工具类和蓝牙工具类优化 实现单例 添加打字机效果 2018.2.20 修改bug 手机工具类添加获取运行内存 cpu型号 电池容量等方法 wifi工具类添加注册监听wifi状态和连接状态监听回调 2018.3.20 添加蓝牙连接状态监听,添加开关蓝牙接口 2018.3.29 wifi工具类添加密码错误监听 手机工具类添加电量监听 运行内存修复 蓝牙工具类添加蓝牙扫描监听和取消 时间工具类修复倒计时方法 添加停止倒计时方法 2018.4.3 添加检查权限回调 单例时间管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiawj8957

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值