摘录android工具类

 1 import android.content.Context;

 2 import android.content.pm.PackageInfo;

 3 import android.content.pm.PackageManager;

 4 import android.content.pm.PackageManager.NameNotFoundException;

 5 

 6 //跟App相关的辅助类

 7 public class AppUtils

 8 {

 9 

10     private AppUtils()

11     {

12         /* cannot be instantiated */

13         throw new UnsupportedOperationException("cannot be instantiated");

14 

15     }

16 

17     /**

18      * 获取应用程序名称

19      */

20     public static String getAppName(Context context)

21     {

22         try

23         {

24             PackageManager packageManager = context.getPackageManager();

25             PackageInfo packageInfo = packageManager.getPackageInfo(

26                     context.getPackageName(), 0);

27             int labelRes = packageInfo.applicationInfo.labelRes;

28             return context.getResources().getString(labelRes);

29         } catch (NameNotFoundException e)

30         {

31             e.printStackTrace();

32         }

33         return null;

34     }

35 

36     /**

37      * [获取应用程序版本名称信息]

38      * 

39      * @param context

40      * @return 当前应用的版本名称

41      */

42     public static String getVersionName(Context context)

43     {

44         try

45         {

46             PackageManager packageManager = context.getPackageManager();

47             PackageInfo packageInfo = packageManager.getPackageInfo(

48                     context.getPackageName(), 0);

49             return packageInfo.versionName;

50 

51         } catch (NameNotFoundException e)

52         {

53             e.printStackTrace();

54         }

55         return null;

56     }

57 

58 }
View Code

二、常用单位转换的辅助类

 1 import android.content.Context;

 2 import android.util.TypedValue;

 3 

 4 //常用单位转换的辅助类

 5 public class DensityUtils

 6 {

 7     private DensityUtils()

 8     {

 9         /* cannot be instantiated */

10         throw new UnsupportedOperationException("cannot be instantiated");

11     }

12 

13     /**

14      * dp转px

15      * 

16      * @param context

17      * @param val

18      * @return

19      */

20     public static int dp2px(Context context, float dpVal)

21     {

22         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,

23                 dpVal, context.getResources().getDisplayMetrics());

24     }

25 

26     /**

27      * sp转px

28      * 

29      * @param context

30      * @param val

31      * @return

32      */

33     public static int sp2px(Context context, float spVal)

34     {

35         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,

36                 spVal, context.getResources().getDisplayMetrics());

37     }

38 

39     /**

40      * px转dp

41      * 

42      * @param context

43      * @param pxVal

44      * @return

45      */

46     public static float px2dp(Context context, float pxVal)

47     {

48         final float scale = context.getResources().getDisplayMetrics().density;

49         return (pxVal / scale);

50     }

51 

52     /**

53      * px转sp

54      * 

55      * @param fontScale

56      * @param pxVal

57      * @return

58      */

59     public static float px2sp(Context context, float pxVal)

60     {

61         return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);

62     }

63 

64 }
View Code

三、Http请求的工具类

  1 import java.io.BufferedReader;

  2 import java.io.ByteArrayOutputStream;

  3 import java.io.IOException;

  4 import java.io.InputStream;

  5 import java.io.InputStreamReader;

  6 import java.io.PrintWriter;

  7 import java.net.HttpURLConnection;

  8 import java.net.URL;

  9 

 10 //Http请求的工具类

 11 public class HttpUtils

 12 {

 13 

 14     private static final int TIMEOUT_IN_MILLIONS = 5000;

 15 

 16     public interface CallBack

 17     {

 18         void onRequestComplete(String result);

 19     }

 20 

 21 

 22     /**

 23      * 异步的Get请求

 24      * 

 25      * @param urlStr

 26      * @param callBack

 27      */

 28     public static void doGetAsyn(final String urlStr, final CallBack callBack)

 29     {

 30         new Thread()

 31         {

 32             public void run()

 33             {

 34                 try

 35                 {

 36                     String result = doGet(urlStr);

 37                     if (callBack != null)

 38                     {

 39                         callBack.onRequestComplete(result);

 40                     }

 41                 } catch (Exception e)

 42                 {

 43                     e.printStackTrace();

 44                 }

 45 

 46             };

 47         }.start();

 48     }

 49 

 50     /**

 51      * 异步的Post请求

 52      * @param urlStr

 53      * @param params

 54      * @param callBack

 55      * @throws Exception

 56      */

 57     public static void doPostAsyn(final String urlStr, final String params,

 58             final CallBack callBack) throws Exception

 59     {

 60         new Thread()

 61         {

 62             public void run()

 63             {

 64                 try

 65                 {

 66                     String result = doPost(urlStr, params);

 67                     if (callBack != null)

 68                     {

 69                         callBack.onRequestComplete(result);

 70                     }

 71                 } catch (Exception e)

 72                 {

 73                     e.printStackTrace();

 74                 }

 75 

 76             };

 77         }.start();

 78 

 79     }

 80 

 81     /**

 82      * Get请求,获得返回数据

 83      * 

 84      * @param urlStr

 85      * @return

 86      * @throws Exception

 87      */

 88     public static String doGet(String urlStr) 

 89     {

 90         URL url = null;

 91         HttpURLConnection conn = null;

 92         InputStream is = null;

 93         ByteArrayOutputStream baos = null;

 94         try

 95         {

 96             url = new URL(urlStr);

 97             conn = (HttpURLConnection) url.openConnection();

 98             conn.setReadTimeout(TIMEOUT_IN_MILLIONS);

 99             conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);

100             conn.setRequestMethod("GET");

101             conn.setRequestProperty("accept", "*/*");

102             conn.setRequestProperty("connection", "Keep-Alive");

103             if (conn.getResponseCode() == 200)

104             {

105                 is = conn.getInputStream();

106                 baos = new ByteArrayOutputStream();

107                 int len = -1;

108                 byte[] buf = new byte[128];

109 

110                 while ((len = is.read(buf)) != -1)

111                 {

112                     baos.write(buf, 0, len);

113                 }

114                 baos.flush();

115                 return baos.toString();

116             } else

117             {

118                 throw new RuntimeException(" responseCode is not 200 ... ");

119             }

120 

121         } catch (Exception e)

122         {

123             e.printStackTrace();

124         } finally

125         {

126             try

127             {

128                 if (is != null)

129                     is.close();

130             } catch (IOException e)

131             {

132             }

133             try

134             {

135                 if (baos != null)

136                     baos.close();

137             } catch (IOException e)

138             {

139             }

140             conn.disconnect();

141         }

142         

143         return null ;

144 

145     }

146 

147     /**

148      * 向指定 URL 发送POST方法的请求

149      * 

150      * @param url

151      *            发送请求的 URL

152      * @param param

153      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

154      * @return 所代表远程资源的响应结果

155      * @throws Exception

156      */

157     public static String doPost(String url, String param) 

158     {

159         PrintWriter out = null;

160         BufferedReader in = null;

161         String result = "";

162         try

163         {

164             URL realUrl = new URL(url);

165             // 打开和URL之间的连接

166             HttpURLConnection conn = (HttpURLConnection) realUrl

167                     .openConnection();

168             // 设置通用的请求属性

169             conn.setRequestProperty("accept", "*/*");

170             conn.setRequestProperty("connection", "Keep-Alive");

171             conn.setRequestMethod("POST");

172             conn.setRequestProperty("Content-Type",

173                     "application/x-www-form-urlencoded");

174             conn.setRequestProperty("charset", "utf-8");

175             conn.setUseCaches(false);

176             // 发送POST请求必须设置如下两行

177             conn.setDoOutput(true);

178             conn.setDoInput(true);

179             conn.setReadTimeout(TIMEOUT_IN_MILLIONS);

180             conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);

181 

182             if (param != null && !param.trim().equals(""))

183             {

184                 // 获取URLConnection对象对应的输出流

185                 out = new PrintWriter(conn.getOutputStream());

186                 // 发送请求参数

187                 out.print(param);

188                 // flush输出流的缓冲

189                 out.flush();

190             }

191             // 定义BufferedReader输入流来读取URL的响应

192             in = new BufferedReader(

193                     new InputStreamReader(conn.getInputStream()));

194             String line;

195             while ((line = in.readLine()) != null)

196             {

197                 result += line;

198             }

199         } catch (Exception e)

200         {

201             e.printStackTrace();

202         }

203         // 使用finally块来关闭输出流、输入流

204         finally

205         {

206             try

207             {

208                 if (out != null)

209                 {

210                     out.close();

211                 }

212                 if (in != null)

213                 {

214                     in.close();

215                 }

216             } catch (IOException ex)

217             {

218                 ex.printStackTrace();

219             }

220         }

221         return result;

222     }

223 }
View Code

四、打开关闭软键盘

 1 import android.content.Context;

 2 import android.view.inputmethod.InputMethodManager;

 3 import android.widget.EditText;

 4 

 5 //打开或关闭软键盘

 6 public class KeyBoardUtils

 7 {

 8     /**

 9      * 打卡软键盘

10      * 

11      * @param mEditText输入框

12      * @param mContext上下文

13      */

14     public static void openKeybord(EditText mEditText, Context mContext)

15     {

16         InputMethodManager imm = (InputMethodManager) mContext

17                 .getSystemService(Context.INPUT_METHOD_SERVICE);

18         imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);

19         imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,

20                 InputMethodManager.HIDE_IMPLICIT_ONLY);

21     }

22 

23     /**

24      * 关闭软键盘

25      * 

26      * @param mEditText输入框

27      * @param mContext上下文

28      */

29     public static void closeKeybord(EditText mEditText, Context mContext)

30     {

31         InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

32 

33         imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);

34     }

35 }
View Code

五、统一管理类

 1 import android.util.Log;

 2 

 3 //Logcat统一管理类

 4 public class L

 5 {

 6 

 7     private L()

 8     {

 9         /* cannot be instantiated */

10         throw new UnsupportedOperationException("cannot be instantiated");

11     }

12 

13     public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化

14     private static final String TAG = "way";

15 

16     // 下面四个是默认tag的函数

17     public static void i(String msg)

18     {

19         if (isDebug)

20             Log.i(TAG, msg);

21     }

22 

23     public static void d(String msg)

24     {

25         if (isDebug)

26             Log.d(TAG, msg);

27     }

28 

29     public static void e(String msg)

30     {

31         if (isDebug)

32             Log.e(TAG, msg);

33     }

34 

35     public static void v(String msg)

36     {

37         if (isDebug)

38             Log.v(TAG, msg);

39     }

40 

41     // 下面是传入自定义tag的函数

42     public static void i(String tag, String msg)

43     {

44         if (isDebug)

45             Log.i(tag, msg);

46     }

47 

48     public static void d(String tag, String msg)

49     {

50         if (isDebug)

51             Log.i(tag, msg);

52     }

53 

54     public static void e(String tag, String msg)

55     {

56         if (isDebug)

57             Log.i(tag, msg);

58     }

59 

60     public static void v(String tag, String msg)

61     {

62         if (isDebug)

63             Log.i(tag, msg);

64     }

65 }
View Code

六、网络工具类

 1 import android.app.Activity;

 2 import android.content.ComponentName;

 3 import android.content.Context;

 4 import android.content.Intent;

 5 import android.net.ConnectivityManager;

 6 import android.net.NetworkInfo;

 7 

 8 //跟网络相关的工具类

 9 public class NetUtils

10 {

11     private NetUtils()

12     {

13         /* cannot be instantiated */

14         throw new UnsupportedOperationException("cannot be instantiated");

15     }

16 

17     /**

18      * 判断网络是否连接

19      * 

20      * @param context

21      * @return

22      */

23     public static boolean isConnected(Context context)

24     {

25 

26         ConnectivityManager connectivity = (ConnectivityManager) context

27                 .getSystemService(Context.CONNECTIVITY_SERVICE);

28 

29         if (null != connectivity)

30         {

31 

32             NetworkInfo info = connectivity.getActiveNetworkInfo();

33             if (null != info && info.isConnected())

34             {

35                 if (info.getState() == NetworkInfo.State.CONNECTED)

36                 {

37                     return true;

38                 }

39             }

40         }

41         return false;

42     }

43 

44     /**

45      * 判断是否是wifi连接

46      */

47     public static boolean isWifi(Context context)

48     {

49         ConnectivityManager cm = (ConnectivityManager) context

50                 .getSystemService(Context.CONNECTIVITY_SERVICE);

51 

52         if (cm == null)

53             return false;

54         return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;

55 

56     }

57 

58     /**

59      * 打开网络设置界面

60      */

61     public static void openSetting(Activity activity)

62     {

63         Intent intent = new Intent("/");

64         ComponentName cm = new ComponentName("com.android.settings",

65                 "com.android.settings.WirelessSettings");

66         intent.setComponent(cm);

67         intent.setAction("android.intent.action.VIEW");

68         activity.startActivityForResult(intent, 0);

69     }

70 

71 }
View Code

七、屏幕操作辅助类

  1 import android.app.Activity;

  2 import android.content.Context;

  3 import android.graphics.Bitmap;

  4 import android.graphics.Rect;

  5 import android.util.DisplayMetrics;

  6 import android.view.View;

  7 import android.view.WindowManager;

  8 

  9 //获得屏幕相关的辅助类

 10 public class ScreenUtils

 11 {

 12     private ScreenUtils()

 13     {

 14         /* cannot be instantiated */

 15         throw new UnsupportedOperationException("cannot be instantiated");

 16     }

 17 

 18     /**

 19      * 获得屏幕高度

 20      * 

 21      * @param context

 22      * @return

 23      */

 24     public static int getScreenWidth(Context context)

 25     {

 26         WindowManager wm = (WindowManager) context

 27                 .getSystemService(Context.WINDOW_SERVICE);

 28         DisplayMetrics outMetrics = new DisplayMetrics();

 29         wm.getDefaultDisplay().getMetrics(outMetrics);

 30         return outMetrics.widthPixels;

 31     }

 32 

 33     /**

 34      * 获得屏幕宽度

 35      * 

 36      * @param context

 37      * @return

 38      */

 39     public static int getScreenHeight(Context context)

 40     {

 41         WindowManager wm = (WindowManager) context

 42                 .getSystemService(Context.WINDOW_SERVICE);

 43         DisplayMetrics outMetrics = new DisplayMetrics();

 44         wm.getDefaultDisplay().getMetrics(outMetrics);

 45         return outMetrics.heightPixels;

 46     }

 47 

 48     /**

 49      * 获得状态栏的高度

 50      * 

 51      * @param context

 52      * @return

 53      */

 54     public static int getStatusHeight(Context context)

 55     {

 56 

 57         int statusHeight = -1;

 58         try

 59         {

 60             Class<?> clazz = Class.forName("com.android.internal.R$dimen");

 61             Object object = clazz.newInstance();

 62             int height = Integer.parseInt(clazz.getField("status_bar_height")

 63                     .get(object).toString());

 64             statusHeight = context.getResources().getDimensionPixelSize(height);

 65         } catch (Exception e)

 66         {

 67             e.printStackTrace();

 68         }

 69         return statusHeight;

 70     }

 71 

 72     /**

 73      * 获取当前屏幕截图,包含状态栏

 74      * 

 75      * @param activity

 76      * @return

 77      */

 78     public static Bitmap snapShotWithStatusBar(Activity activity)

 79     {

 80         View view = activity.getWindow().getDecorView();

 81         view.setDrawingCacheEnabled(true);

 82         view.buildDrawingCache();

 83         Bitmap bmp = view.getDrawingCache();

 84         int width = getScreenWidth(activity);

 85         int height = getScreenHeight(activity);

 86         Bitmap bp = null;

 87         bp = Bitmap.createBitmap(bmp, 0, 0, width, height);

 88         view.destroyDrawingCache();

 89         return bp;

 90 

 91     }

 92 

 93     /**

 94      * 获取当前屏幕截图,不包含状态栏

 95      * 

 96      * @param activity

 97      * @return

 98      */

 99     public static Bitmap snapShotWithoutStatusBar(Activity activity)

100     {

101         View view = activity.getWindow().getDecorView();

102         view.setDrawingCacheEnabled(true);

103         view.buildDrawingCache();

104         Bitmap bmp = view.getDrawingCache();

105         Rect frame = new Rect();

106         activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

107         int statusBarHeight = frame.top;

108 

109         int width = getScreenWidth(activity);

110         int height = getScreenHeight(activity);

111         Bitmap bp = null;

112         bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height

113                 - statusBarHeight);

114         view.destroyDrawingCache();

115         return bp;

116 

117     }

118 

119 }
View Code

八、sd操作类

 1 import java.io.File;

 2 

 3 import android.os.Environment;

 4 import android.os.StatFs;

 5 

 6 //SD卡相关的辅助类

 7 public class SDCardUtils

 8 {

 9     private SDCardUtils()

10     {

11         /* cannot be instantiated */

12         throw new UnsupportedOperationException("cannot be instantiated");

13     }

14 

15     /**

16      * 判断SDCard是否可用

17      * 

18      * @return

19      */

20     public static boolean isSDCardEnable()

21     {

22         return Environment.getExternalStorageState().equals(

23                 Environment.MEDIA_MOUNTED);

24 

25     }

26 

27     /**

28      * 获取SD卡路径

29      * 

30      * @return

31      */

32     public static String getSDCardPath()

33     {

34         return Environment.getExternalStorageDirectory().getAbsolutePath()

35                 + File.separator;

36     }

37 

38     /**

39      * 获取SD卡的剩余容量 单位byte

40      * 

41      * @return

42      */

43     public static long getSDCardAllSize()

44     {

45         if (isSDCardEnable())

46         {

47             StatFs stat = new StatFs(getSDCardPath());

48             // 获取空闲的数据块的数量

49             long availableBlocks = (long) stat.getAvailableBlocks() - 4;

50             // 获取单个数据块的大小(byte)

51             long freeBlocks = stat.getAvailableBlocks();

52             return freeBlocks * availableBlocks;

53         }

54         return 0;

55     }

56 

57     /**

58      * 获取指定路径所在空间的剩余可用容量字节数,单位byte

59      * 

60      * @param filePath

61      * @return 容量字节 SDCard可用空间,内部存储可用空间

62      */

63     public static long getFreeBytes(String filePath)

64     {

65         // 如果是sd卡的下的路径,则获取sd卡可用容量

66         if (filePath.startsWith(getSDCardPath()))

67         {

68             filePath = getSDCardPath();

69         } else

70         {// 如果是内部存储的路径,则获取内存存储的可用容量

71             filePath = Environment.getDataDirectory().getAbsolutePath();

72         }

73         StatFs stat = new StatFs(filePath);

74         long availableBlocks = (long) stat.getAvailableBlocks() - 4;

75         return stat.getBlockSize() * availableBlocks;

76     }

77 

78     /**

79      * 获取系统存储路径

80      * 

81      * @return

82      */

83     public static String getRootDirectoryPath()

84     {

85         return Environment.getRootDirectory().getAbsolutePath();

86     }

87 

88 

89 }
View Code

九、存储类

  1 import java.lang.reflect.InvocationTargetException;

  2 import java.lang.reflect.Method;

  3 import java.util.Map;

  4 

  5 import android.content.Context;

  6 import android.content.SharedPreferences;

  7 

  8 public class SPUtils

  9 {

 10     public SPUtils()

 11     {

 12         /* cannot be instantiated */

 13         throw new UnsupportedOperationException("cannot be instantiated");

 14     }

 15 

 16     /**

 17      * 保存在手机里面的文件名

 18      */

 19     public static final String FILE_NAME = "share_data";

 20 

 21     /**

 22      * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法

 23      * 

 24      * @param context

 25      * @param key

 26      * @param object

 27      */

 28     public static void put(Context context, String key, Object object)

 29     {

 30 

 31         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

 32                 Context.MODE_PRIVATE);

 33         SharedPreferences.Editor editor = sp.edit();

 34 

 35         if (object instanceof String)

 36         {

 37             editor.putString(key, (String) object);

 38         } else if (object instanceof Integer)

 39         {

 40             editor.putInt(key, (Integer) object);

 41         } else if (object instanceof Boolean)

 42         {

 43             editor.putBoolean(key, (Boolean) object);

 44         } else if (object instanceof Float)

 45         {

 46             editor.putFloat(key, (Float) object);

 47         } else if (object instanceof Long)

 48         {

 49             editor.putLong(key, (Long) object);

 50         } else

 51         {

 52             editor.putString(key, object.toString());

 53         }

 54 

 55         SharedPreferencesCompat.apply(editor);

 56     }

 57 

 58     /**

 59      * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值

 60      * 

 61      * @param context

 62      * @param key

 63      * @param defaultObject

 64      * @return

 65      */

 66     public static Object get(Context context, String key, Object defaultObject)

 67     {

 68         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

 69                 Context.MODE_PRIVATE);

 70 

 71         if (defaultObject instanceof String)

 72         {

 73             return sp.getString(key, (String) defaultObject);

 74         } else if (defaultObject instanceof Integer)

 75         {

 76             return sp.getInt(key, (Integer) defaultObject);

 77         } else if (defaultObject instanceof Boolean)

 78         {

 79             return sp.getBoolean(key, (Boolean) defaultObject);

 80         } else if (defaultObject instanceof Float)

 81         {

 82             return sp.getFloat(key, (Float) defaultObject);

 83         } else if (defaultObject instanceof Long)

 84         {

 85             return sp.getLong(key, (Long) defaultObject);

 86         }

 87 

 88         return null;

 89     }

 90 

 91     /**

 92      * 移除某个key值已经对应的值

 93      * 

 94      * @param context

 95      * @param key

 96      */

 97     public static void remove(Context context, String key)

 98     {

 99         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

100                 Context.MODE_PRIVATE);

101         SharedPreferences.Editor editor = sp.edit();

102         editor.remove(key);

103         SharedPreferencesCompat.apply(editor);

104     }

105 

106     /**

107      * 清除所有数据

108      * 

109      * @param context

110      */

111     public static void clear(Context context)

112     {

113         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

114                 Context.MODE_PRIVATE);

115         SharedPreferences.Editor editor = sp.edit();

116         editor.clear();

117         SharedPreferencesCompat.apply(editor);

118     }

119 

120     /**

121      * 查询某个key是否已经存在

122      * 

123      * @param context

124      * @param key

125      * @return

126      */

127     public static boolean contains(Context context, String key)

128     {

129         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

130                 Context.MODE_PRIVATE);

131         return sp.contains(key);

132     }

133 

134     /**

135      * 返回所有的键值对

136      * 

137      * @param context

138      * @return

139      */

140     public static Map<String, ?> getAll(Context context)

141     {

142         SharedPreferences sp = context.getSharedPreferences(FILE_NAME,

143                 Context.MODE_PRIVATE);

144         return sp.getAll();

145     }

146 

147     /**

148      * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类

149      * 

150      * @author zhy

151      * 

152      */

153     private static class SharedPreferencesCompat

154     {

155         private static final Method sApplyMethod = findApplyMethod();

156 

157         /**

158          * 反射查找apply的方法

159          * 

160          * @return

161          */

162         @SuppressWarnings({ "unchecked", "rawtypes" })

163         private static Method findApplyMethod()

164         {

165             try

166             {

167                 Class clz = SharedPreferences.Editor.class;

168                 return clz.getMethod("apply");

169             } catch (NoSuchMethodException e)

170             {

171             }

172 

173             return null;

174         }

175 

176         /**

177          * 如果找到则使用apply执行,否则使用commit

178          * 

179          * @param editor

180          */

181         public static void apply(SharedPreferences.Editor editor)

182         {

183             try

184             {

185                 if (sApplyMethod != null)

186                 {

187                     sApplyMethod.invoke(editor);

188                     return;

189                 }

190             } catch (IllegalArgumentException e)

191             {

192             } catch (IllegalAccessException e)

193             {

194             } catch (InvocationTargetException e)

195             {

196             }

197             editor.commit();

198         }

199     }

200 

201 }
View Code

十、Toast操作类

 1 import android.content.Context;

 2 import android.widget.Toast;

 3 

 4  //Toast统一管理类

 5 public class T

 6 {

 7 

 8     private T()

 9     {

10         /* cannot be instantiated */

11         throw new UnsupportedOperationException("cannot be instantiated");

12     }

13 

14     public static boolean isShow = true;

15 

16     /**

17      * 短时间显示Toast

18      * 

19      * @param context

20      * @param message

21      */

22     public static void showShort(Context context, CharSequence message)

23     {

24         if (isShow)

25             Toast.makeText(context, message, Toast.LENGTH_SHORT).show();

26     }

27 

28     /**

29      * 短时间显示Toast

30      * 

31      * @param context

32      * @param message

33      */

34     public static void showShort(Context context, int message)

35     {

36         if (isShow)

37             Toast.makeText(context, message, Toast.LENGTH_SHORT).show();

38     }

39 

40     /**

41      * 长时间显示Toast

42      * 

43      * @param context

44      * @param message

45      */

46     public static void showLong(Context context, CharSequence message)

47     {

48         if (isShow)

49             Toast.makeText(context, message, Toast.LENGTH_LONG).show();

50     }

51 

52     /**

53      * 长时间显示Toast

54      * 

55      * @param context

56      * @param message

57      */

58     public static void showLong(Context context, int message)

59     {

60         if (isShow)

61             Toast.makeText(context, message, Toast.LENGTH_LONG).show();

62     }

63 

64     /**

65      * 自定义显示Toast时间

66      * 

67      * @param context

68      * @param message

69      * @param duration

70      */

71     public static void show(Context context, CharSequence message, int duration)

72     {

73         if (isShow)

74             Toast.makeText(context, message, duration).show();

75     }

76 

77     /**

78      * 自定义显示Toast时间

79      * 

80      * @param context

81      * @param message

82      * @param duration

83      */

84     public static void show(Context context, int message, int duration)

85     {

86         if (isShow)

87             Toast.makeText(context, message, duration).show();

88     }

89 

90 }
View Code

十一、操作图片类

  1 import java.io.BufferedReader;

  2 import java.io.ByteArrayOutputStream;

  3 import java.io.File;

  4 import java.io.FileInputStream;

  5 import java.io.IOException;

  6 import java.io.InputStream;

  7 import java.io.InputStreamReader;

  8 import java.lang.ref.WeakReference;

  9 

 10 import android.app.Activity;

 11 import android.content.Context;

 12 import android.graphics.Bitmap;

 13 import android.graphics.BitmapFactory;

 14 import android.graphics.Matrix;

 15 import android.graphics.Bitmap.CompressFormat;

 16 import android.graphics.Typeface;

 17 import android.net.ConnectivityManager;

 18 import android.net.NetworkInfo.State;

 19 import android.util.Base64;

 20 import android.view.View;

 21 import android.view.ViewGroup;

 22 import android.view.ViewGroup.LayoutParams;

 23 import android.widget.Button;

 24 import android.widget.EditText;

 25 import android.widget.TextView;

 26 

 27 public class ToolFor9Ge 

 28 {

 29     // 缩放/裁剪图片

 30      public static Bitmap zoomImg(Bitmap bm, int newWidth ,int newHeight)

 31      { 

 32          // 获得图片的宽高

 33          int width = bm.getWidth();

 34          int height = bm.getHeight();

 35          // 计算缩放比例

 36          float scaleWidth = ((float) newWidth) / width;

 37          float scaleHeight = ((float) newHeight) / height;

 38          // 取得想要缩放的matrix参数

 39          Matrix matrix = new Matrix();

 40          matrix.postScale(scaleWidth, scaleHeight);

 41          // 得到新的图片

 42          Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);

 43          return newbm;

 44      }

 45      

 46      // 判断有无网络链接

 47      public static boolean checkNetworkInfo(Context mContext) {

 48            ConnectivityManager conMan = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);

 49            State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();

 50            State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();

 51            if (mobile == State.CONNECTED || mobile == State.CONNECTING)

 52               return true;

 53            if (wifi == State.CONNECTED || wifi == State.CONNECTING)

 54               return true;

 55            return false;

 56      }

 57      

 58      // 从路径获取文件名

 59      public static String getFileName(String pathandname){ 

 60          int start=pathandname.lastIndexOf("/");  

 61          int end=pathandname.lastIndexOf(".");  

 62          if(start!=-1 && end!=-1){  

 63              return pathandname.substring(start+1,end);    

 64          }else{  

 65              return null;  

 66          }             

 67      }

 68      

 69      // 通过路径生成Base64文件

 70      public static String getBase64FromPath(String path)

 71      {

 72          String base64="";

 73          try

 74          {

 75              File file = new File(path);

 76              byte[] buffer = new byte[(int) file.length() + 100];  

 77             @SuppressWarnings("resource")

 78             int length = new FileInputStream(file).read(buffer);  

 79              base64 = Base64.encodeToString(buffer, 0, length,  Base64.DEFAULT);

 80          }

 81          catch (IOException e) {

 82             e.printStackTrace();

 83         }

 84          return base64;

 85      }

 86      

 87      //通过文件路径获取到bitmap

 88      public static Bitmap getBitmapFromPath(String path, int w, int h) {

 89         BitmapFactory.Options opts = new BitmapFactory.Options();

 90         // 设置为ture只获取图片大小

 91         opts.inJustDecodeBounds = true;

 92         opts.inPreferredConfig = Bitmap.Config.ARGB_8888;

 93         // 返回为空

 94         BitmapFactory.decodeFile(path, opts);

 95         int width = opts.outWidth;

 96         int height = opts.outHeight;

 97         float scaleWidth = 0.f, scaleHeight = 0.f;

 98         if (width > w || height > h) {

 99             // 缩放

100             scaleWidth = ((float) width) / w;

101             scaleHeight = ((float) height) / h;

102         }

103         opts.inJustDecodeBounds = false;

104         float scale = Math.max(scaleWidth, scaleHeight);

105         opts.inSampleSize = (int)scale;

106         WeakReference<Bitmap> weak = new WeakReference<Bitmap>(BitmapFactory.decodeFile(path, opts));

107         return Bitmap.createScaledBitmap(weak.get(), w, h, true);

108     }

109      

110      //把bitmap转换成base64

111      public static String getBase64FromBitmap(Bitmap bitmap, int bitmapQuality)

112      {

113          ByteArrayOutputStream bStream = new ByteArrayOutputStream();

114          bitmap.compress(CompressFormat.PNG, bitmapQuality, bStream);

115          byte[] bytes = bStream.toByteArray();

116          return Base64.encodeToString(bytes, Base64.DEFAULT);

117      }

118      

119      //把base64转换成bitmap

120      public static Bitmap getBitmapFromBase64(String string)

121      {

122          byte[] bitmapArray = null;

123          try {

124          bitmapArray = Base64.decode(string, Base64.DEFAULT);

125          } catch (Exception e) {

126          e.printStackTrace();

127          }

128          return BitmapFactory.decodeByteArray(bitmapArray, 0,bitmapArray.length);

129      }

130      

131      //把Stream转换成String

132      public static String convertStreamToString(InputStream is) {

133          BufferedReader reader = new BufferedReader(new InputStreamReader(is));

134             StringBuilder sb = new StringBuilder();

135             String line = null;

136 

137             try {

138                 while ((line = reader.readLine()) != null) {

139                     sb.append(line + "/n");

140                 }

141             } catch (IOException e) {

142                 e.printStackTrace();

143             } finally {

144                 try {

145                     is.close();

146                 } catch (IOException e) {

147                     e.printStackTrace();

148                 }

149             }

150             return sb.toString();    

151      }    

152      

153      // 修改整个界面所有控件的字体

154      public static void changeFonts(ViewGroup root,String path, Activity act) {  

155         //path是字体路径

156          Typeface tf = Typeface.createFromAsset(act.getAssets(),path);  

157         for (int i = 0; i < root.getChildCount(); i++) {  

158             View v = root.getChildAt(i); 

159             if (v instanceof TextView) {  

160                ((TextView) v).setTypeface(tf);  

161             } else if (v instanceof Button) {  

162                ((Button) v).setTypeface(tf);  

163             } else if (v instanceof EditText) {  

164                ((EditText) v).setTypeface(tf);  

165             } else if (v instanceof ViewGroup) {  

166                changeFonts((ViewGroup) v, path,act);  

167             } 

168         }  

169      }

170      

171      // 修改整个界面所有控件的字体大小

172       public static void changeTextSize(ViewGroup root,int size, Activity act) {  

173          for (int i = 0; i < root.getChildCount(); i++) {  

174              View v = root.getChildAt(i);  

175              if (v instanceof TextView) {  

176                 ((TextView) v).setTextSize(size);

177              } else if (v instanceof Button) {  

178                 ((Button) v).setTextSize(size);

179              } else if (v instanceof EditText) {  

180                 ((EditText) v).setTextSize(size);  

181              } else if (v instanceof ViewGroup) {  

182                 changeTextSize((ViewGroup) v,size,act);  

183              }  

184          }  

185       }

186       

187       // 不改变控件位置,修改控件大小

188     public static void changeWH(View v,int W,int H)

189     {

190         LayoutParams params = (LayoutParams)v.getLayoutParams();

191         params.width = W;

192         params.height = H;

193         v.setLayoutParams(params);

194     }

195     

196     // 修改控件的高

197     public static void changeH(View v,int H)

198     {

199         LayoutParams params = (LayoutParams)v.getLayoutParams();

200         params.height = H;

201         v.setLayoutParams(params);

202     }

203         

204 

205 }
View Code

以上代码也是借鉴他人成果,此处展示仅为学习交流。

 

你可能感兴趣的:(android)