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

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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作