Android开发中常用的工具类整理

日志

 1 package net.wujingchao.android.utility
 2 
 3 import android.util.Log;
 4 
 5 public final class L {
 6 
 7     private final static int LEVEL = 5;
 8 
 9     private final static String DEFAULT_TAG = "L";
10 
11     private L() {
12         throw new UnsupportedOperationException("L cannot instantiated!");
13     }
14 
15     public static void v(String tag,String msg) {
16         if(LEVEL >= 5)Log.v(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
17     }
18 
19     public static void d(String tag,String msg) {
20         if(LEVEL >= 4)Log.d(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
21     }
22 
23     public static void i(String tag,String msg) {
24         if(LEVEL >= 3)Log.i(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
25     }
26 
27     public static void w(String tag,String msg) {
28         if(LEVEL >= 2)Log.w(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
29     }
30 
31     public static void e(String tag,String msg) {
32         if(LEVEL >= 1)Log.e(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
33     }
34 }

Toast

 1 package net.wujingchao.android.utility    
 2 
 3 import android.content.Context;
 4 import android.widget.Toast;
 5 
 6 public class T {
 7 
 8     private final static boolean isShow = true;
 9 
10     private T(){
11         throw new UnsupportedOperationException("T cannot be instantiated");
12     }
13 
14     public static void showShort(Context context,CharSequence text) {
15         if(isShow)Toast.makeText(context,text,Toast.LENGTH_SHORT).show();
16     }
17 
18     public static void showLong(Context context,CharSequence text) {
19         if(isShow)Toast.makeText(context,text,Toast.LENGTH_LONG).show();
20     }
21 }

网络

 1 package net.wujingchao.android.utility
 2 
 3 import android.app.Activity;
 4 import android.content.ComponentName;
 5 import android.content.Context;
 6 import android.content.Intent;
 7 import android.net.ConnectivityManager;
 8 import android.net.NetworkInfo;
 9 
10 import javax.net.ssl.HttpsURLConnection;
11 import javax.net.ssl.SSLContext;
12 import javax.net.ssl.TrustManager;
13 import javax.net.ssl.X509TrustManager;
14 
15 public class NetworkUtil {
16     
17     private NetworkUtil() {
18         throw new UnsupportedOperationException("NetworkUtil cannot be instantiated");
19     }
20 
21     /**
22      * 判断网络是否连接
23      *
24      */
25     public static boolean isConnected(Context context)  {
26         ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
27         if (null != connectivity) {
28             NetworkInfo info = connectivity.getActiveNetworkInfo();
29             if (null != info && info.isConnected()){
30                 if (info.getState() == NetworkInfo.State.CONNECTED) {
31                     return true;
32                 }
33             }
34         }
35         return false;
36     }
37 
38     /**
39      * 判断是否是wifi连接
40      */
41     public static boolean isWifi(Context context){
42         ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
43         if (connectivity == null) return false;
44         return connectivity.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
45 
46     }
47 
48     /**
49      * 打开网络设置界面
50      */
51     public static void openSetting(Activity activity) {
52         Intent intent = new Intent("/");
53         ComponentName componentName = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");
54         intent.setComponent(componentName);
55         intent.setAction("android.intent.action.VIEW");
56         activity.startActivityForResult(intent, 0);
57     }
58 
59     /**
60      * 使用SSL不信任的证书
61      */
62     public static  void useUntrustedCertificate() {
63         // Create a trust manager that does not validate certificate chains
64         TrustManager[] trustAllCerts = new TrustManager[]{
65                 new X509TrustManager() {
66                     public java.security.cert.X509Certificate[] getAcceptedIssuers() {
67                         return null;
68                     }
69                     public void checkClientTrusted(
70                             java.security.cert.X509Certificate[] certs, String authType) {
71                     }
72                     public void checkServerTrusted(
73                             java.security.cert.X509Certificate[] certs, String authType) {
74                     }
75                 }
76         };
77         // Install the all-trusting trust manager
78         try {
79             SSLContext sc = SSLContext.getInstance("SSL");
80             sc.init(null, trustAllCerts, new java.security.SecureRandom());
81             HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
82         } catch (Exception e) {
83            e.printStackTrace();
84         }
85     }
86 }

像素单位转换

 1 package net.wujingchao.android.utility    
 2 
 3 import android.content.Context;
 4 import android.util.TypedValue;
 5 
 6     public class DensityUtil {
 7 
 8     private DensityUtil() {
 9         throw new UnsupportedOperationException("DensityUtil cannot be instantiated");
10     }
11 
12     public int dip2px(Context context,int dipValue) {
13         final float scale = context.getResources().getDisplayMetrics().density;
14         return (int)(dipValue*scale + 0.5f);
15     }
16 
17     public int px2dip(Context context,float pxValue) {
18         final float scale = context.getResources().getDisplayMetrics().density;
19         return (int)(pxValue/scale + 0.5f);
20     }
21 
22     public static float px2sp(Context context, float pxValue){
23         return (pxValue / context.getResources().getDisplayMetrics().scaledDensity);
24     }
25 
26     public static int sp2px(Context context, int spValue){
27         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
28                 spValue, context.getResources().getDisplayMetrics());
29     }
30 }

屏幕

 1 package net.wujingchao.android.utility    
 2 
 3 import android.app.Activity;
 4 import android.content.Context;
 5 import android.graphics.Bitmap;
 6 import android.graphics.Rect;
 7 import android.util.DisplayMetrics;
 8 import android.view.View;
 9 import android.view.WindowManager;
10 
11 public class ScreenUtil {
12 
13     private ScreenUtil()
14     {
15         throw new UnsupportedOperationException("ScreenUtil cannot be instantiated");
16     }
17 
18     public static int getScreenWidth(Context context)
19     {
20         WindowManager wm = (WindowManager) context
21                 .getSystemService(Context.WINDOW_SERVICE);
22         DisplayMetrics outMetrics = new DisplayMetrics();
23         wm.getDefaultDisplay().getMetrics(outMetrics);
24         return outMetrics.widthPixels;
25     }
26 
27     public static int getScreenHeight(Context context) {
28         WindowManager wm = (WindowManager) context
29                 .getSystemService(Context.WINDOW_SERVICE);
30         DisplayMetrics outMetrics = new DisplayMetrics();
31         wm.getDefaultDisplay().getMetrics(outMetrics);
32         return outMetrics.heightPixels;
33     }
34 
35     public static int getStatusHeight(Context context) {
36         int statusHeight = -1;
37         try {
38             Class<?> clazz = Class.forName("com.android.internal.R$dimen");
39             Object object = clazz.newInstance();
40             int height = Integer.parseInt(clazz.getField("status_bar_height")
41                     .get(object).toString());
42             statusHeight = context.getResources().getDimensionPixelSize(height);
43         } catch (Exception e) {
44             e.printStackTrace();
45         }
46         return statusHeight;
47     }
48 
49     /**
50      * 获取当前屏幕截图,包含状态栏
51      */
52     public static Bitmap snapShotWithStatusBar(Activity activity){
53         View view = activity.getWindow().getDecorView();
54         view.setDrawingCacheEnabled(true);
55         view.buildDrawingCache();
56         Bitmap bmp = view.getDrawingCache();
57         int width = getScreenWidth(activity);
58         int height = getScreenHeight(activity);
59         Bitmap bp = null;
60         bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
61         view.destroyDrawingCache();
62         return bp;
63     }
64 
65     /**
66      * 获取当前屏幕截图,不包含状态栏
67      *
68      */
69     public static Bitmap snapShotWithoutStatusBar(Activity activity){
70         View view = activity.getWindow().getDecorView();
71         view.setDrawingCacheEnabled(true);
72         view.buildDrawingCache();
73         Bitmap bmp = view.getDrawingCache();
74         Rect frame = new Rect();
75         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
76         int statusBarHeight = frame.top;
77         int width = getScreenWidth(activity);
78         int height = getScreenHeight(activity);
79         Bitmap bp = null;
80         bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
81                 - statusBarHeight);
82         view.destroyDrawingCache();
83         return bp;
84     }
85 }

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;
    }
}

键盘

 1 package net.wujingchao.android.utility
 2 
 3 import android.content.Context;
 4 import android.view.inputmethod.InputMethodManager;
 5 import android.widget.EditText;
 6 
 7 public class KeyBoardUtil{
 8 
 9     private KeyBoardUtil(){
10         throw new UnsupportedOperationException("KeyBoardUtil cannot be instantiated");
11     }
12 
13     /**
14      * 打卡软键盘
15      */
16     public static void openKeybord(EditText mEditText, Context mContext){
17         InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
18         imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
19         imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
20     }
21     /**
22      * 关闭软键盘
23      */
24     public static void closeKeybord(EditText mEditText, Context mContext) {
25         InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
26         imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
27     }
28 }

文件上传下载

  1 package net.wujingchao.android.utility
  2 
  3 import android.content.Context;
  4 import android.os.Environment;
  5 
  6 import java.io.ByteArrayOutputStream;
  7 import java.io.DataOutputStream;
  8 import java.io.File; 
  9 import java.io.FileInputStream;
 10 import java.io.FileNotFoundException;
 11 import java.io.IOException;
 12 import java.io.InputStream; 
 13 import java.io.OutputStream;
 14 import java.net.HttpURLConnection;
 15 import java.net.MalformedURLException;
 16 import java.net.ProtocolException;
 17 import java.net.URL;
 18 import java.util.UUID;
 19 
 20 import com.mixiaofan.App;
 21 
 22 public class DownloadUtil {
 23 
 24      private static final int TIME_OUT = 30*1000; //超时时间
 25 
 26      private static final String CHARSET = "utf-8"; //设置编码
 27 
 28      private DownloadUtil() {
 29         throw new UnsupportedOperationException("DownloadUtil cannot be instantiated");
 30      }
 31 
 32     /**
 33      * @param file  上传文件
 34      * @param RequestURL 上传文件URL
 35      * @return 服务器返回的信息,如果出错则返回为null
 36      */
 37      public static String uploadFile(File file,String RequestURL) {
 38          String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成 String PREFIX = "--" , LINE_END = "
";
 39          String PREFIX = "--" , LINE_END = "
";
 40          String CONTENT_TYPE = "multipart/form-data"; //内容类型
 41          try {
 42              URL url = new URL(RequestURL);
 43              HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 44              conn.setReadTimeout(TIME_OUT);
 45              conn.setConnectTimeout(TIME_OUT);
 46              conn.setDoInput(true); //允许输入流
 47              conn.setDoOutput(true); //允许输出流
 48              conn.setUseCaches(false); //不允许使用缓存 
 49              conn.setRequestMethod("POST"); //请求方式 
 50              conn.setRequestProperty("Charset", CHARSET);
 51              conn.setRequestProperty("Cookie", "PHPSESSID=" + App.getSessionId());
 52              //设置编码 
 53              conn.setRequestProperty("connection", "keep-alive"); 
 54              conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
 55              if(file!=null) { 
 56                      /** * 当文件不为空,把文件包装并且上传 */
 57                      OutputStream outputSteam=conn.getOutputStream();
 58                      DataOutputStream dos = new DataOutputStream(outputSteam);
 59                      StringBuffer sb = new StringBuffer();
 60                      sb.append(PREFIX);
 61                      sb.append(BOUNDARY); sb.append(LINE_END);
 62                      /**
 63                      * 这里重点注意:
 64                      * name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
 65                      * filename是文件的名字,包含后缀名的 比如:abc.png
 66                      */
 67                      sb.append("Content-Disposition: form-data; name="img"; filename=""+file.getName()+"""+LINE_END);
 68                      sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);
 69                      sb.append(LINE_END);
 70                      dos.write(sb.toString().getBytes());
 71                      InputStream is = new FileInputStream(file);
 72                      byte[] bytes = new byte[1024];
 73                      int len;
 74                      while((len=is.read(bytes))!=-1)
 75                      {
 76                         dos.write(bytes, 0, len);
 77                      }
 78                      is.close();
 79                      dos.write(LINE_END.getBytes());
 80                      byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();
 81                      dos.write(end_data);
 82                      dos.flush();
 83                      /**
 84                      * 获取响应码 200=成功
 85                      * 当响应成功,获取响应的流
 86                      */
 87                      ByteArrayOutputStream bos = new ByteArrayOutputStream();
 88                      InputStream resultStream = conn.getInputStream();
 89                      len = -1;
 90                      byte [] buffer = new byte[1024*8];
 91                      while((len = resultStream.read(buffer)) != -1) {
 92                          bos.write(buffer,0,len);
 93                      }
 94                      resultStream.close();
 95                      bos.flush();
 96                      bos.close();
 97                      String info = new String(bos.toByteArray());
 98                      int res = conn.getResponseCode();
 99                      if(res==200){
100                         return info;
101                      }else {
102                          return null;
103                      }
104                 }
105                } catch (MalformedURLException e) {
106                     e.printStackTrace();
107                } catch (ProtocolException e) {
108                     e.printStackTrace();
109                } catch (FileNotFoundException e) {
110                     e.printStackTrace();
111                } catch (IOException e) {
112                      e.printStackTrace();
113                }
114          return null;
115      }
116 
117      public static byte[] download(String urlStr) {
118             HttpURLConnection conn = null;
119             InputStream is = null;
120             byte[] result = null;
121             ByteArrayOutputStream bos = null;
122             try {
123                 URL url = new URL(urlStr);
124                 conn = (HttpURLConnection) url.openConnection();
125                 conn.setRequestMethod("GET");
126                 conn.setConnectTimeout(TIME_OUT);
127                 conn.setReadTimeout(TIME_OUT);
128                 conn.setDoInput(true);
129                 conn.setUseCaches(false);//不使用缓存
130                 if(conn.getResponseCode() == 200) {
131                     is = conn.getInputStream();
132                     byte [] buffer = new byte[1024*8];
133                     int len;
134                     bos = new ByteArrayOutputStream();
135                     while((len = is.read(buffer)) != -1) {
136                         bos.write(buffer,0,len);
137                     }
138                     bos.flush();
139                     result = bos.toByteArray();
140                 }
141             } catch (MalformedURLException e) {
142                 e.printStackTrace();
143             } catch (IOException e) {
144                 e.printStackTrace();
145             } finally {
146                 try {
147                     if(bos != null){
148                         bos.close();
149                     }
150                     if (is != null) {
151                         is.close();
152                     }
153                     if (conn != null)conn.disconnect();
154                 } catch (IOException e) {
155                     e.printStackTrace();
156                 }
157             }
158             return result;
159         }
160 
161     /**
162      * 获取缓存文件
163      */
164      public static File getDiskCacheFile(Context context,String filename,boolean isExternal) {
165         if(isExternal && (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) {
166             return new File(context.getExternalCacheDir(),filename);
167         }else {
168             return new File(context.getCacheDir(),filename);
169         }
170     }
171 
172     /**
173      * 获取缓存文件目录
174      */
175      public static File getDiskCacheDirectory(Context context) {
176         if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
177             return context.getExternalCacheDir();
178         }else {
179             return context.getCacheDir();
180         }
181     }
182  }

加密

 1 package net.wujingchao.android.utility
 2 
 3 import java.security.MessageDigest;
 4 import java.security.NoSuchAlgorithmException;
 5 
 6 public class CipherUtil { 
 7 
 8     private CipherUtil() {
 9 
10     }
11 
12     //字节数组转化为16进制字符串
13     public static String byteArrayToHex(byte[] byteArray) {
14         char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };
15         char[] resultCharArray =new char[byteArray.length * 2];
16         int index = 0;
17         for (byte b : byteArray) {
18             resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];
19             resultCharArray[index++] = hexDigits[b & 0xf];
20         }
21         return new String(resultCharArray);
22     }
23 
24     //字节数组md5算法
25     public static byte[] md5 (byte [] bytes) {
26         try {
27             MessageDigest messageDigest = MessageDigest.getInstance("MD5");
28             messageDigest.update(bytes);
29             return messageDigest.digest();
30         } catch (NoSuchAlgorithmException e) {
31             e.printStackTrace();
32         }
33         return null;
34     }
35 }

时间

 1 package net.wujingchao.android.utility
 2 import java.text.SimpleDateFormat;
 3 import java.util.Date;
 4 
 5 
 6 public class DateUtil {
 7 
 8     //转换中文对应的时段
 9     public static String convertNowHour2CN(Date date) {
10         SimpleDateFormat sdf = new SimpleDateFormat("HH");
11         String hourString = sdf.format(date);
12         int hour = Integer.parseInt(hourString);
13         if(hour < 6) {
14             return "凌晨";
15         }else if(hour >= 6 && hour < 12) {
16             return "早上";
17         }else if(hour == 12) {
18             return "中午";
19         }else if(hour > 12 && hour <=18) {
20             return "下午";
21         }else if(hour >=19) {
22             return "晚上";
23         }
24         return "";
25     }
26 
27     //剩余秒数转换
28     public static String convertSecond2Day(int time) {
29         int day = time/86400;
30         int hour = (time - 86400*day)/3600;
31         int min = (time - 86400*day - 3600*hour)/60;
32         int sec = (time - 86400*day - 3600*hour - 60*min);
33         StringBuilder sb = new StringBuilder();
34         sb.append(day);
35         sb.append("天");
36         sb.append(hour);
37         sb.append("时");
38         sb.append(min);
39         sb.append("分");
40         sb.append(sec);
41         sb.append("秒");
42         return sb.toString();
43     }
44 
45 }
原文地址:https://www.cnblogs.com/lovejoy/p/4364874.html