本文主要是介绍把项目中常用的小工具做个总结吧,方便自己以后用到,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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"; }
持续更新...
这篇关于把项目中常用的小工具做个总结吧,方便自己以后用到的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!