把项目中常用的小工具做个总结吧,方便自己以后用到

2024-05-10 10:08

本文主要是介绍把项目中常用的小工具做个总结吧,方便自己以后用到,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、根据手机的分辨率从 dp 的单位 转成为 px(像素) 

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

2、根据手机的分辨率从 px(像素) 的单位 转成为 dp

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

3、获取屏幕的宽度

public static int getScreenWidth(Context context) {DisplayMetrics dm = new DisplayMetrics();dm = context.getApplicationContext().getResources().getDisplayMetrics();int width = dm.widthPixels;return width;}

4、获取屏幕的高度

public static int getScreenHeight(Context context) {DisplayMetrics dm = new DisplayMetrics();dm = context.getApplicationContext().getResources().getDisplayMetrics();int height = dm.heightPixels;return height;}

5、验证手机号格式

public static boolean isMobileNO(String mobiles) {Pattern p = Pattern.compile("^[1][3,4,5,8,7][0-9]{9}$");Matcher m = p.matcher(mobiles);return m.matches();}

6、验证邮箱格式正确性,仅验证邮箱是否是字母或数字组成、以及@符号后是否为字母或数字

public static boolean checkEmail(String arg0) {return arg0.matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$");}

7、用户名,由字母数字下划线组成,并以字母下划线开头,6到20个字符之间

public boolean checkUserName(String name){Pattern pattern = Pattern.compile("^^[a-zA-Z_][a-zA-Z0-9_]{5,19}$");Matcher matcher = pattern.matcher(name);  return matcher.matches();}

8、根据身份证获取性别

public static String getSex(String arg0) {if(checkNullMethod(arg0) && arg0.length() >= 18){String sex = arg0.substring(16, 17);int sex2 = Integer.valueOf(sex);if (sex2 % 2 == 0) {return "女";}}else{return "男";}return "";}

9、根据身份证获取出生日期

public static String getBirth(String arg0) {String year = arg0.substring(6, 10);String month = arg0.substring(10, 12);String day = arg0.substring(12, 14);return year + "-" + month + "-" + day;}

10、根据身份证获取年龄

public static String getAge(String arg0) {String year = arg0.substring(6, 10);SimpleDateFormat sdf = new SimpleDateFormat("yyyy");String nowYear = sdf.format(System.currentTimeMillis());int age = Integer.valueOf(nowYear) - Integer.valueOf(year);return age + "";}

11、String字符串判空

public static boolean checkNullMethod(String arg0) {if(arg0 == null)return false;arg0 = arg0.trim();if (arg0 != null  && arg0.length() != 0 && !arg0.equals("null") && !arg0.equals("")) {return true;}return false;}

 
 

12、图片uri转换为bitmap

public Bitmap decodeUriAsBitmap(Uri uri) {Bitmap bitmap = null;try {bitmap = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri));} catch (FileNotFoundException e) {e.printStackTrace();return null;}return bitmap;}

13、动态设置item中listview的高度

public static void setListheight(ListView listview) {ListAdapter listadapter = listview.getAdapter();if (listadapter == null) {return;}int totalheight = 0;for (int i = 0; i < listadapter.getCount(); i++) {View listItem = listadapter.getView(i, null, listview);listItem.measure(0, 0);totalheight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listview.getLayoutParams();params.height = totalheight+ (listview.getDividerHeight() * (listadapter.getCount() - 1));listview.setLayoutParams(params);}

14、获取应用版本名称,此处是versionName

public String getVersionName() {String versionName = "v1.0";try {PackageManager pm = context.getPackageManager();PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);versionName = pi.versionName;} catch (NameNotFoundException e) {e.printStackTrace();}return versionName;}

15、获取应用版本号,此处是versionCode

public int getVersionCode() {try {PackageManager pm = context.getPackageManager();PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);return pi.versionCode;} catch (NameNotFoundException e) {e.printStackTrace();}return 0;}

16、关闭软键盘

public void closeInput(EditText ed_text) {InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);// 得到InputMethodManager的实例if (imm.isActive()) {imm.hideSoftInputFromWindow(ed_text.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);}}

17、根据uri获取路径,如果是uri路径则通过uri返回文件绝对路径

public String getUriPath(Uri fileUri) {Uri filePathUri = fileUri;if (fileUri != null) {/** content://  开头的uri*/if (fileUri.getScheme().toString().compareTo("content") == 0) {// 通过uri获取选中的图片文件路径String[] proj = { MediaStore.Images.Media.DATA };@SuppressWarnings("deprecation")Cursor cursor = ((Activity) context).managedQuery(fileUri,proj, null, null, null);int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();// 最后根据索引值获取图片路径String path = cursor.getString(column_index);return path;}/** file://   开头的uri*/else if (fileUri.getScheme().compareTo("file") == 0) {String fileName = filePathUri.toString();fileName = filePathUri.toString().replace("file://", "");return fileName;}}return null;}

18、检测屏幕是否是锁屏状态;为true,表示有两种状态:a、屏幕是黑的 b、目前正处于解锁状态 。为false,表示目前未锁屏

public boolean getIsLockScreen(){KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);return mKeyguardManager.inKeyguardRestrictedInputMode();}

19、日期转换;long类型转成String类型

public static String longToString(long currentTime, String formatType) throws ParseException {Date date = longToDate(currentTime, formatType); // long类型转成Date类型String strTime = dateToString(date, formatType); // date类型转成Stringreturn strTime;}

20、日期转换;string类型转换为long类型

public static long stringToLong(String strTime, String formatType) throws ParseException {Date date = stringToDate(strTime, formatType); // String类型转成date类型if (date == null) {return 0;} else {long currentTime = dateToLong(date); // date类型转成long类型return currentTime;}}

21、日期转换;date类型转换为long类型

public static long dateToLong(Date date) {return date.getTime();}

22、日期转换;long类型转成date类型

public static Date longToDate(long currentTime, String formatType) throws ParseException {Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为stringDate date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型return date;}

23、日期转换;String类型转成date类型

public static Date stringToDate(String strTime, String formatType) throws ParseException {SimpleDateFormat formatter = new SimpleDateFormat(formatType);Date date = null;try {date = formatter.parse(strTime);} catch (java.text.ParseException e) {e.printStackTrace();}return date;}

24、date类型转换为String类型; formatType格式为 yyyy-MM-dd HH:mm:ss(yyyy年MM月dd日  HH时mm分ss秒); data为Date类型的时间

public static String dateToString(Date data, String formatType) {return new SimpleDateFormat(formatType).format(data);}

25、隐藏系统级别导航

public static void hideVirtualButtons(Activity activity) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE);}}

26、获取系统内存剩余

public static long getAvailableMemory(Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();am.getMemoryInfo(memoryInfo);return memoryInfo.availMem;}

27、判断APP是否在前台

public static boolean isAppOnForeground(Context context) {ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);String packageName = context.getApplicationContext().getPackageName();List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();if (appProcesses == null)return false;for (RunningAppProcessInfo appProcess : appProcesses) {if (appProcess.processName.equals(packageName)&& appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {return true;}}return false;}

28、判断SD卡是否可用

public static boolean hasSdcard() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {return true;} return false;}

29、复制文件

public static void copyfile(File fromFile, File toFile){if(toFile.exists()){toFile.delete();}FileInputStream fosform;try {fosform = new FileInputStream(fromFile);FileOutputStream fosto = new FileOutputStream(toFile);byte b[] = new byte[1024];int len;while((len = fosform.read(b)) > 0){fosto.write(b,0,len);}fosform.close();fosto.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

30、转换文件大小

public static String getFormetFileSize(){long fileS = getCacheSize();DecimalFormat df = new DecimalFormat("#0.00");String fileSizeString = "";if (fileS < 1024){fileSizeString = df.format((double) fileS) + "B";}else if (fileS < 1048576){fileSizeString = df.format((double) fileS / 1024) + "K";}else if (fileS < 1073741824){fileSizeString = df.format((double) fileS / 1048576) + "M";}else{fileSizeString = df.format((double) fileS / 1073741824) + "G";}return fileSizeString;}

31、保存要缓存的数据到私有文件

public void saveDatasInFile(String xmlString, String fileName) {FileOutputStream fos = null;try{fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);fos.write(xmlString.getBytes());fos.flush();}catch(Exception e){e.printStackTrace();}finally{try {fos.close();} catch (Exception e) {}}}

32、读取私有文件缓存的数据

public void readDatasInFile(final String fileName,final readFileCallback callback){  try {  FileInputStream fin = context.openFileInput(fileName);  //获取文件长度  int lenght = fin.available();  byte[] buffer = new byte[lenght];  fin.read(buffer);  //将byte数组转换成指定格式的字符串  String result = new String(buffer,"utf-8");  callback.readFile(result);} catch (Exception e) {  e.printStackTrace();  }  }  public interface readFileCallback{public void readFile(String string);}

33、获取视频封面

public static String getVideoThumbPath(Context context, String path) {String thumbPath = null;Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path, MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);File file = SDUtils.getCreatFile(context, SDUtils.imgCachePicUrl, System.currentTimeMillis() + ".jpg");FileOutputStream fOut = null;try {fOut = new FileOutputStream(file);bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);fOut.flush();fOut.close();} catch (IOException e) {return null;}thumbPath = file.getAbsolutePath();return thumbPath;}


34、okhttp3打印请求参数(表单提交方式)

private static String bodyToString(final Request request){try {final Request copy = request.newBuilder().build();final Buffer buffer = new Buffer();copy.body().writeTo(buffer);String s = buffer.readUtf8();return URLDecoder.decode(s, "UTF-8");} catch (final IOException e) {return "did not work";
}


持续更新...












































这篇关于把项目中常用的小工具做个总结吧,方便自己以后用到的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976141

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插