Android开发中常用的工具类整理
2018-07-20 来源:open-open
package net.wujingchao.android.utility import android.util.Log; public final class L { private final static int LEVEL = 5; private final static String DEFAULT_TAG = "L"; private L() { throw new UnsupportedOperationException("L cannot instantiated!"); } public static void v(String tag,String msg) { if(LEVEL >= 5)Log.v(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg); } public static void d(String tag,String msg) { if(LEVEL >= 4)Log.d(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg); } public static void i(String tag,String msg) { if(LEVEL >= 3)Log.i(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg); } public static void w(String tag,String msg) { if(LEVEL >= 2)Log.w(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg); } public static void e(String tag,String msg) { if(LEVEL >= 1)Log.e(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg); } }
Toast
package net.wujingchao.android.utility import android.content.Context; import android.widget.Toast; public class T { private final static boolean isShow = true; private T(){ throw new UnsupportedOperationException("T cannot be instantiated"); } public static void showShort(Context context,CharSequence text) { if(isShow)Toast.makeText(context,text,Toast.LENGTH_SHORT).show(); } public static void showLong(Context context,CharSequence text) { if(isShow)Toast.makeText(context,text,Toast.LENGTH_LONG).show(); } }
网络
package net.wujingchao.android.utility import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class NetworkUtil { private NetworkUtil() { throw new UnsupportedOperationException("NetworkUtil cannot be instantiated"); } /** * 判断网络是否连接 * */ public static boolean isConnected(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (null != connectivity) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (null != info && info.isConnected()){ if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } /** * 判断是否是wifi连接 */ public static boolean isWifi(Context context){ ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) return false; return connectivity.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; } /** * 打开网络设置界面 */ public static void openSetting(Activity activity) { Intent intent = new Intent("/"); ComponentName componentName = new ComponentName("com.android.settings","com.android.settings.WirelessSettings"); intent.setComponent(componentName); intent.setAction("android.intent.action.VIEW"); activity.startActivityForResult(intent, 0); } /** * 使用SSL不信任的证书 */ public static void useUntrustedCertificate() { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } } }
像素单位转换
package net.wujingchao.android.utility import android.content.Context; import android.util.TypedValue; public class DensityUtil { private DensityUtil() { throw new UnsupportedOperationException("DensityUtil cannot be instantiated"); } public int dip2px(Context context,int dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int)(dipValue*scale + 0.5f); } public int px2dip(Context context,float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue/scale + 0.5f); } public static float px2sp(Context context, float pxValue){ return (pxValue / context.getResources().getDisplayMetrics().scaledDensity); } public static int sp2px(Context context, int spValue){ return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics()); } }
屏幕
package net.wujingchao.android.utility import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; public class ScreenUtil { private ScreenUtil() { throw new UnsupportedOperationException("ScreenUtil cannot be instantiated"); } public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.widthPixels; } public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels; } public static int getStatusHeight(Context context) { int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int height = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } /** * 获取当前屏幕截图,包含状态栏 */ public static Bitmap snapShotWithStatusBar(Activity activity){ View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, 0, width, height); view.destroyDrawingCache(); return bp; } /** * 获取当前屏幕截图,不包含状态栏 * */ public static Bitmap snapShotWithoutStatusBar(Activity activity){ View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return bp; } }
App相关
package net.wujingchao.android.utility import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; public class AppUtil { private AppUtil() { throw new UnsupportedOperationException("AppUtil cannot instantiated"); } /** * 获取app版本名 */ public static String getAppVersionName(Context context){ PackageManager pm = context.getPackageManager(); PackageInfo pi; try { pi = pm.getPackageInfo(context.getPackageName(),0); return pi.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; } /** * 获取应用程序版本名称信息 */ public static String getVersionName(Context context) { try{ PackageManager packageManager = context.getPackageManager(); PackageInfo packageInfo = packageManager.getPackageInfo( context.getPackageName(), 0); return packageInfo.versionName; }catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; } /** * 获取app版本号 */ public static int getAppVersionCode(Context context){ PackageManager pm = context.getPackageManager(); PackageInfo pi; try { pi = pm.getPackageInfo(context.getPackageName(),0); return pi.versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return 0; } }
键盘
package net.wujingchao.android.utility import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; public class KeyBoardUtil{ private KeyBoardUtil(){ throw new UnsupportedOperationException("KeyBoardUtil cannot be instantiated"); } /** * 打卡软键盘 */ public static void openKeybord(EditText mEditText, Context mContext){ InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); } /** * 关闭软键盘 */ public static void closeKeybord(EditText mEditText, Context mContext) { InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0); } }
文件上传下载
package net.wujingchao.android.utility import android.content.Context; import android.os.Environment; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.util.UUID; import com.mixiaofan.App; public class DownloadUtil { private static final int TIME_OUT = 30*1000; //超时时间 private static final String CHARSET = "utf-8"; //设置编码 private DownloadUtil() { throw new UnsupportedOperationException("DownloadUtil cannot be instantiated"); } /** * @param file 上传文件 * @param RequestURL 上传文件URL * @return 服务器返回的信息,如果出错则返回为null */ public static String uploadFile(File file,String RequestURL) { String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成 String PREFIX = "--" , LINE_END = "\r\n"; String PREFIX = "--" , LINE_END = "\r\n"; String CONTENT_TYPE = "multipart/form-data"; //内容类型 try { URL url = new URL(RequestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(TIME_OUT); conn.setConnectTimeout(TIME_OUT); conn.setDoInput(true); //允许输入流 conn.setDoOutput(true); //允许输出流 conn.setUseCaches(false); //不允许使用缓存 conn.setRequestMethod("POST"); //请求方式 conn.setRequestProperty("Charset", CHARSET); conn.setRequestProperty("Cookie", "PHPSESSID=" + App.getSessionId()); //设置编码 conn.setRequestProperty("connection", "keep-alive"); conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY); if(file!=null) { /** * 当文件不为空,把文件包装并且上传 */ OutputStream outputSteam=conn.getOutputStream(); DataOutputStream dos = new DataOutputStream(outputSteam); StringBuffer sb = new StringBuffer(); sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINE_END); /** * 这里重点注意: * name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件 * filename是文件的名字,包含后缀名的 比如:abc.png */ sb.append("Content-Disposition: form-data; name=\"img\"; filename=\""+file.getName()+"\""+LINE_END); sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END); sb.append(LINE_END); dos.write(sb.toString().getBytes()); InputStream is = new FileInputStream(file); byte[] bytes = new byte[1024]; int len; while((len=is.read(bytes))!=-1) { dos.write(bytes, 0, len); } is.close(); dos.write(LINE_END.getBytes()); byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes(); dos.write(end_data); dos.flush(); /** * 获取响应码 200=成功 * 当响应成功,获取响应的流 */ ByteArrayOutputStream bos = new ByteArrayOutputStream(); InputStream resultStream = conn.getInputStream(); len = -1; byte [] buffer = new byte[1024*8]; while((len = resultStream.read(buffer)) != -1) { bos.write(buffer,0,len); } resultStream.close(); bos.flush(); bos.close(); String info = new String(bos.toByteArray()); int res = conn.getResponseCode(); if(res==200){ return info; }else { return null; } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static byte[] download(String urlStr) { HttpURLConnection conn = null; InputStream is = null; byte[] result = null; ByteArrayOutputStream bos = null; try { URL url = new URL(urlStr); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(TIME_OUT); conn.setReadTimeout(TIME_OUT); conn.setDoInput(true); conn.setUseCaches(false);//不使用缓存 if(conn.getResponseCode() == 200) { is = conn.getInputStream(); byte [] buffer = new byte[1024*8]; int len; bos = new ByteArrayOutputStream(); while((len = is.read(buffer)) != -1) { bos.write(buffer,0,len); } bos.flush(); result = bos.toByteArray(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(bos != null){ bos.close(); } if (is != null) { is.close(); } if (conn != null)conn.disconnect(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * 获取缓存文件 */ public static File getDiskCacheFile(Context context,String filename,boolean isExternal) { if(isExternal && (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) { return new File(context.getExternalCacheDir(),filename); }else { return new File(context.getCacheDir(),filename); } } /** * 获取缓存文件目录 */ public static File getDiskCacheDirectory(Context context) { if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { return context.getExternalCacheDir(); }else { return context.getCacheDir(); } } }
加密
package net.wujingchao.android.utility import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class CipherUtil { private CipherUtil() { } //字节数组转化为16进制字符串 public static String byteArrayToHex(byte[] byteArray) { char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' }; char[] resultCharArray =new char[byteArray.length * 2]; int index = 0; for (byte b : byteArray) { resultCharArray[index++] = hexDigits[b>>> 4 & 0xf]; resultCharArray[index++] = hexDigits[b & 0xf]; } return new String(resultCharArray); } //字节数组md5算法 public static byte[] md5 (byte [] bytes) { try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.update(bytes); return messageDigest.digest(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } }
时间
package net.wujingchao.android.utility import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { //转换中文对应的时段 public static String convertNowHour2CN(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("HH"); String hourString = sdf.format(date); int hour = Integer.parseInt(hourString); if(hour < 6) { return "凌晨"; }else if(hour >= 6 && hour < 12) { return "早上"; }else if(hour == 12) { return "中午"; }else if(hour > 12 && hour <=18) { return "下午"; }else if(hour >=19) { return "晚上"; } return ""; } //剩余秒数转换 public static String convertSecond2Day(int time) { int day = time/86400; int hour = (time - 86400*day)/3600; int min = (time - 86400*day - 3600*hour)/60; int sec = (time - 86400*day - 3600*hour - 60*min); StringBuilder sb = new StringBuilder(); sb.append(day); sb.append("天"); sb.append(hour); sb.append("时"); sb.append(min); sb.append("分"); sb.append(sec); sb.append("秒"); return sb.toString(); } }
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐