日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【转】 Android快速开发系列 10个常用工具类 -- 不错

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】 Android快速开发系列 10个常用工具类 -- 不错 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文網址:http://blog.csdn.net/lmj623565791/article/details/38965311

轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【張鴻洋的博客】

打開大家手上的項目,基本都會有一大批的輔助類,今天特此整理出10個基本每個項目中都會使用的工具類,用于快速開發~~

在此感謝群里給我發項目中工具類的兄弟/姐妹~

1、日志工具類L.java

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?android.util.Log;??
  4. ??
  5. /**?
  6. ?*?Log統一管理類?
  7. ?*??
  8. ?*??
  9. ?*??
  10. ?*/??
  11. public?class?L??
  12. {??
  13. ??
  14. ????private?L()??
  15. ????{??
  16. ????????/*?cannot?be?instantiated?*/??
  17. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  18. ????}??
  19. ??
  20. ????public?static?boolean?isDebug?=?true;//?是否需要打印bug,可以在application的onCreate函數里面初始化??
  21. ????private?static?final?String?TAG?=?"way";??
  22. ??
  23. ????//?下面四個是默認tag的函數??
  24. ????public?static?void?i(String?msg)??
  25. ????{??
  26. ????????if?(isDebug)??
  27. ????????????Log.i(TAG,?msg);??
  28. ????}??
  29. ??
  30. ????public?static?void?d(String?msg)??
  31. ????{??
  32. ????????if?(isDebug)??
  33. ????????????Log.d(TAG,?msg);??
  34. ????}??
  35. ??
  36. ????public?static?void?e(String?msg)??
  37. ????{??
  38. ????????if?(isDebug)??
  39. ????????????Log.e(TAG,?msg);??
  40. ????}??
  41. ??
  42. ????public?static?void?v(String?msg)??
  43. ????{??
  44. ????????if?(isDebug)??
  45. ????????????Log.v(TAG,?msg);??
  46. ????}??
  47. ??
  48. ????//?下面是傳入自定義tag的函數??
  49. ????public?static?void?i(String?tag,?String?msg)??
  50. ????{??
  51. ????????if?(isDebug)??
  52. ????????????Log.i(tag,?msg);??
  53. ????}??
  54. ??
  55. ????public?static?void?d(String?tag,?String?msg)??
  56. ????{??
  57. ????????if?(isDebug)??
  58. ????????????Log.i(tag,?msg);??
  59. ????}??
  60. ??
  61. ????public?static?void?e(String?tag,?String?msg)??
  62. ????{??
  63. ????????if?(isDebug)??
  64. ????????????Log.i(tag,?msg);??
  65. ????}??
  66. ??
  67. ????public?static?void?v(String?tag,?String?msg)??
  68. ????{??
  69. ????????if?(isDebug)??
  70. ????????????Log.i(tag,?msg);??
  71. ????}??
  72. }??



?

網上看到的類,注釋上應該原創作者的名字,很簡單的一個類;網上也有很多提供把日志記錄到SDCard上的,不過我是從來沒記錄過,所以引入個最簡單的,大家可以進行評價是否需要擴充~~

2、Toast統一管理類?

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?android.content.Context;??
  4. import?android.widget.Toast;??
  5. ??
  6. /**?
  7. ?*?Toast統一管理類?
  8. ?*??
  9. ?*/??
  10. public?class?T??
  11. {??
  12. ??
  13. ????private?T()??
  14. ????{??
  15. ????????/*?cannot?be?instantiated?*/??
  16. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  17. ????}??
  18. ??
  19. ????public?static?boolean?isShow?=?true;??
  20. ??
  21. ????/**?
  22. ?????*?短時間顯示Toast?
  23. ?????*??
  24. ?????*?@param?context?
  25. ?????*?@param?message?
  26. ?????*/??
  27. ????public?static?void?showShort(Context?context,?CharSequence?message)??
  28. ????{??
  29. ????????if?(isShow)??
  30. ????????????Toast.makeText(context,?message,?Toast.LENGTH_SHORT).show();??
  31. ????}??
  32. ??
  33. ????/**?
  34. ?????*?短時間顯示Toast?
  35. ?????*??
  36. ?????*?@param?context?
  37. ?????*?@param?message?
  38. ?????*/??
  39. ????public?static?void?showShort(Context?context,?int?message)??
  40. ????{??
  41. ????????if?(isShow)??
  42. ????????????Toast.makeText(context,?message,?Toast.LENGTH_SHORT).show();??
  43. ????}??
  44. ??
  45. ????/**?
  46. ?????*?長時間顯示Toast?
  47. ?????*??
  48. ?????*?@param?context?
  49. ?????*?@param?message?
  50. ?????*/??
  51. ????public?static?void?showLong(Context?context,?CharSequence?message)??
  52. ????{??
  53. ????????if?(isShow)??
  54. ????????????Toast.makeText(context,?message,?Toast.LENGTH_LONG).show();??
  55. ????}??
  56. ??
  57. ????/**?
  58. ?????*?長時間顯示Toast?
  59. ?????*??
  60. ?????*?@param?context?
  61. ?????*?@param?message?
  62. ?????*/??
  63. ????public?static?void?showLong(Context?context,?int?message)??
  64. ????{??
  65. ????????if?(isShow)??
  66. ????????????Toast.makeText(context,?message,?Toast.LENGTH_LONG).show();??
  67. ????}??
  68. ??
  69. ????/**?
  70. ?????*?自定義顯示Toast時間?
  71. ?????*??
  72. ?????*?@param?context?
  73. ?????*?@param?message?
  74. ?????*?@param?duration?
  75. ?????*/??
  76. ????public?static?void?show(Context?context,?CharSequence?message,?int?duration)??
  77. ????{??
  78. ????????if?(isShow)??
  79. ????????????Toast.makeText(context,?message,?duration).show();??
  80. ????}??
  81. ??
  82. ????/**?
  83. ?????*?自定義顯示Toast時間?
  84. ?????*??
  85. ?????*?@param?context?
  86. ?????*?@param?message?
  87. ?????*?@param?duration?
  88. ?????*/??
  89. ????public?static?void?show(Context?context,?int?message,?int?duration)??
  90. ????{??
  91. ????????if?(isShow)??
  92. ????????????Toast.makeText(context,?message,?duration).show();??
  93. ????}??
  94. ??
  95. }??



?

也是非常簡單的一個封裝,能省則省了~~

3、SharedPreferences封裝類SPUtils

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?java.lang.reflect.InvocationTargetException;??
  4. import?java.lang.reflect.Method;??
  5. import?java.util.Map;??
  6. ??
  7. import?android.content.Context;??
  8. import?android.content.SharedPreferences;??
  9. ??
  10. public?class?SPUtils??
  11. {??
  12. ????/**?
  13. ?????*?保存在手機里面的文件名?
  14. ?????*/??
  15. ????public?static?final?String?FILE_NAME?=?"share_data";??
  16. ??
  17. ????/**?
  18. ?????*?保存數據的方法,我們需要拿到保存數據的具體類型,然后根據類型調用不同的保存方法?
  19. ?????*??
  20. ?????*?@param?context?
  21. ?????*?@param?key?
  22. ?????*?@param?object?
  23. ?????*/??
  24. ????public?static?void?put(Context?context,?String?key,?Object?object)??
  25. ????{??
  26. ??
  27. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  28. ????????????????Context.MODE_PRIVATE);??
  29. ????????SharedPreferences.Editor?editor?=?sp.edit();??
  30. ??
  31. ????????if?(object?instanceof?String)??
  32. ????????{??
  33. ????????????editor.putString(key,?(String)?object);??
  34. ????????}?else?if?(object?instanceof?Integer)??
  35. ????????{??
  36. ????????????editor.putInt(key,?(Integer)?object);??
  37. ????????}?else?if?(object?instanceof?Boolean)??
  38. ????????{??
  39. ????????????editor.putBoolean(key,?(Boolean)?object);??
  40. ????????}?else?if?(object?instanceof?Float)??
  41. ????????{??
  42. ????????????editor.putFloat(key,?(Float)?object);??
  43. ????????}?else?if?(object?instanceof?Long)??
  44. ????????{??
  45. ????????????editor.putLong(key,?(Long)?object);??
  46. ????????}?else??
  47. ????????{??
  48. ????????????editor.putString(key,?object.toString());??
  49. ????????}??
  50. ??
  51. ????????SharedPreferencesCompat.apply(editor);??
  52. ????}??
  53. ??
  54. ????/**?
  55. ?????*?得到保存數據的方法,我們根據默認值得到保存的數據的具體類型,然后調用相對于的方法獲取值?
  56. ?????*??
  57. ?????*?@param?context?
  58. ?????*?@param?key?
  59. ?????*?@param?defaultObject?
  60. ?????*?@return?
  61. ?????*/??
  62. ????public?static?Object?get(Context?context,?String?key,?Object?defaultObject)??
  63. ????{??
  64. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  65. ????????????????Context.MODE_PRIVATE);??
  66. ??
  67. ????????if?(defaultObject?instanceof?String)??
  68. ????????{??
  69. ????????????return?sp.getString(key,?(String)?defaultObject);??
  70. ????????}?else?if?(defaultObject?instanceof?Integer)??
  71. ????????{??
  72. ????????????return?sp.getInt(key,?(Integer)?defaultObject);??
  73. ????????}?else?if?(defaultObject?instanceof?Boolean)??
  74. ????????{??
  75. ????????????return?sp.getBoolean(key,?(Boolean)?defaultObject);??
  76. ????????}?else?if?(defaultObject?instanceof?Float)??
  77. ????????{??
  78. ????????????return?sp.getFloat(key,?(Float)?defaultObject);??
  79. ????????}?else?if?(defaultObject?instanceof?Long)??
  80. ????????{??
  81. ????????????return?sp.getLong(key,?(Long)?defaultObject);??
  82. ????????}??
  83. ??
  84. ????????return?null;??
  85. ????}??
  86. ??
  87. ????/**?
  88. ?????*?移除某個key值已經對應的值?
  89. ?????*?@param?context?
  90. ?????*?@param?key?
  91. ?????*/??
  92. ????public?static?void?remove(Context?context,?String?key)??
  93. ????{??
  94. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  95. ????????????????Context.MODE_PRIVATE);??
  96. ????????SharedPreferences.Editor?editor?=?sp.edit();??
  97. ????????editor.remove(key);??
  98. ????????SharedPreferencesCompat.apply(editor);??
  99. ????}??
  100. ??
  101. ????/**?
  102. ?????*?清除所有數據?
  103. ?????*?@param?context?
  104. ?????*/??
  105. ????public?static?void?clear(Context?context)??
  106. ????{??
  107. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  108. ????????????????Context.MODE_PRIVATE);??
  109. ????????SharedPreferences.Editor?editor?=?sp.edit();??
  110. ????????editor.clear();??
  111. ????????SharedPreferencesCompat.apply(editor);??
  112. ????}??
  113. ??
  114. ????/**?
  115. ?????*?查詢某個key是否已經存在?
  116. ?????*?@param?context?
  117. ?????*?@param?key?
  118. ?????*?@return?
  119. ?????*/??
  120. ????public?static?boolean?contains(Context?context,?String?key)??
  121. ????{??
  122. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  123. ????????????????Context.MODE_PRIVATE);??
  124. ????????return?sp.contains(key);??
  125. ????}??
  126. ??
  127. ????/**?
  128. ?????*?返回所有的鍵值對?
  129. ?????*??
  130. ?????*?@param?context?
  131. ?????*?@return?
  132. ?????*/??
  133. ????public?static?Map<String,??>?getAll(Context?context)??
  134. ????{??
  135. ????????SharedPreferences?sp?=?context.getSharedPreferences(FILE_NAME,??
  136. ????????????????Context.MODE_PRIVATE);??
  137. ????????return?sp.getAll();??
  138. ????}??
  139. ??
  140. ????/**?
  141. ?????*?創建一個解決SharedPreferencesCompat.apply方法的一個兼容類?
  142. ?????*??
  143. ?????*?@author?zhy?
  144. ?????*??
  145. ?????*/??
  146. ????private?static?class?SharedPreferencesCompat??
  147. ????{??
  148. ????????private?static?final?Method?sApplyMethod?=?findApplyMethod();??
  149. ??
  150. ????????/**?
  151. ?????????*?反射查找apply的方法?
  152. ?????????*??
  153. ?????????*?@return?
  154. ?????????*/??
  155. ????????@SuppressWarnings({?"unchecked",?"rawtypes"?})??
  156. ????????private?static?Method?findApplyMethod()??
  157. ????????{??
  158. ????????????try??
  159. ????????????{??
  160. ????????????????Class?clz?=?SharedPreferences.Editor.class;??
  161. ????????????????return?clz.getMethod("apply");??
  162. ????????????}?catch?(NoSuchMethodException?e)??
  163. ????????????{??
  164. ????????????}??
  165. ??
  166. ????????????return?null;??
  167. ????????}??
  168. ??
  169. ????????/**?
  170. ?????????*?如果找到則使用apply執行,否則使用commit?
  171. ?????????*??
  172. ?????????*?@param?editor?
  173. ?????????*/??
  174. ????????public?static?void?apply(SharedPreferences.Editor?editor)??
  175. ????????{??
  176. ????????????try??
  177. ????????????{??
  178. ????????????????if?(sApplyMethod?!=?null)??
  179. ????????????????{??
  180. ????????????????????sApplyMethod.invoke(editor);??
  181. ????????????????????return;??
  182. ????????????????}??
  183. ????????????}?catch?(IllegalArgumentException?e)??
  184. ????????????{??
  185. ????????????}?catch?(IllegalAccessException?e)??
  186. ????????????{??
  187. ????????????}?catch?(InvocationTargetException?e)??
  188. ????????????{??
  189. ????????????}??
  190. ????????????editor.commit();??
  191. ????????}??
  192. ????}??
  193. ??
  194. }??


對SharedPreference的使用做了建議的封裝,對外公布出put,get,remove,clear等等方法;

?

注意一點,里面所有的commit操作使用了SharedPreferencesCompat.apply進行了替代,目的是盡可能的使用apply代替commit

首先說下為什么,因為commit方法是同步的,并且我們很多時候的commit操作都是UI線程中,畢竟是IO操作,盡可能異步;

所以我們使用apply進行替代,apply異步的進行寫入;

但是apply相當于commit來說是new API呢,為了更好的兼容,我們做了適配;

SharedPreferencesCompat也可以給大家創建兼容類提供了一定的參考~~

?

4、單位轉換類?DensityUtils

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?android.content.Context;??
  4. import?android.util.TypedValue;??
  5. ??
  6. /**?
  7. ?*?常用單位轉換的輔助類?
  8. ?*??
  9. ?*??
  10. ?*??
  11. ?*/??
  12. public?class?DensityUtils??
  13. {??
  14. ????private?DensityUtils()??
  15. ????{??
  16. ????????/*?cannot?be?instantiated?*/??
  17. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  18. ????}??
  19. ??
  20. ????/**?
  21. ?????*?dp轉px?
  22. ?????*??
  23. ?????*?@param?context?
  24. ?????*?@param?val?
  25. ?????*?@return?
  26. ?????*/??
  27. ????public?static?int?dp2px(Context?context,?float?dpVal)??
  28. ????{??
  29. ????????return?(int)?TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,??
  30. ????????????????dpVal,?context.getResources().getDisplayMetrics());??
  31. ????}??
  32. ??
  33. ????/**?
  34. ?????*?sp轉px?
  35. ?????*??
  36. ?????*?@param?context?
  37. ?????*?@param?val?
  38. ?????*?@return?
  39. ?????*/??
  40. ????public?static?int?sp2px(Context?context,?float?spVal)??
  41. ????{??
  42. ????????return?(int)?TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,??
  43. ????????????????spVal,?context.getResources().getDisplayMetrics());??
  44. ????}??
  45. ??
  46. ????/**?
  47. ?????*?px轉dp?
  48. ?????*??
  49. ?????*?@param?context?
  50. ?????*?@param?pxVal?
  51. ?????*?@return?
  52. ?????*/??
  53. ????public?static?float?px2dp(Context?context,?float?pxVal)??
  54. ????{??
  55. ????????final?float?scale?=?context.getResources().getDisplayMetrics().density;??
  56. ????????return?(pxVal?/?scale);??
  57. ????}??
  58. ??
  59. ????/**?
  60. ?????*?px轉sp?
  61. ?????*??
  62. ?????*?@param?fontScale?
  63. ?????*?@param?pxVal?
  64. ?????*?@return?
  65. ?????*/??
  66. ????public?static?float?px2sp(Context?context,?float?pxVal)??
  67. ????{??
  68. ????????return?(pxVal?/?context.getResources().getDisplayMetrics().scaledDensity);??
  69. ????}??
  70. ??
  71. }??

?

5、SD卡相關輔助類?SDCardUtils

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?java.io.File;??
  4. ??
  5. import?android.os.Environment;??
  6. import?android.os.StatFs;??
  7. ??
  8. /**?
  9. ?*?SD卡相關的輔助類?
  10. ?*??
  11. ?*??
  12. ?*??
  13. ?*/??
  14. public?class?SDCardUtils??
  15. {??
  16. ????private?SDCardUtils()??
  17. ????{??
  18. ????????/*?cannot?be?instantiated?*/??
  19. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  20. ????}??
  21. ??
  22. ????/**?
  23. ?????*?判斷SDCard是否可用?
  24. ?????*??
  25. ?????*?@return?
  26. ?????*/??
  27. ????public?static?boolean?isSDCardEnable()??
  28. ????{??
  29. ????????return?Environment.getExternalStorageState().equals(??
  30. ????????????????Environment.MEDIA_MOUNTED);??
  31. ??
  32. ????}??
  33. ??
  34. ????/**?
  35. ?????*?獲取SD卡路徑?
  36. ?????*??
  37. ?????*?@return?
  38. ?????*/??
  39. ????public?static?String?getSDCardPath()??
  40. ????{??
  41. ????????return?Environment.getExternalStorageDirectory().getAbsolutePath()??
  42. ????????????????+?File.separator;??
  43. ????}??
  44. ??
  45. ????/**?
  46. ?????*?獲取SD卡的剩余容量?單位byte?
  47. ?????*??
  48. ?????*?@return?
  49. ?????*/??
  50. ????public?static?long?getSDCardAllSize()??
  51. ????{??
  52. ????????if?(isSDCardEnable())??
  53. ????????{??
  54. ????????????StatFs?stat?=?new?StatFs(getSDCardPath());??
  55. ????????????//?獲取空閑的數據塊的數量??
  56. ????????????long?availableBlocks?=?(long)?stat.getAvailableBlocks()?-?4;??
  57. ????????????//?獲取單個數據塊的大小(byte)??
  58. ????????????long?freeBlocks?=?stat.getAvailableBlocks();??
  59. ????????????return?freeBlocks?*?availableBlocks;??
  60. ????????}??
  61. ????????return?0;??
  62. ????}??
  63. ??
  64. ????/**?
  65. ?????*?獲取指定路徑所在空間的剩余可用容量字節數,單位byte?
  66. ?????*??
  67. ?????*?@param?filePath?
  68. ?????*?@return?容量字節?SDCard可用空間,內部存儲可用空間?
  69. ?????*/??
  70. ????public?static?long?getFreeBytes(String?filePath)??
  71. ????{??
  72. ????????//?如果是sd卡的下的路徑,則獲取sd卡可用容量??
  73. ????????if?(filePath.startsWith(getSDCardPath()))??
  74. ????????{??
  75. ????????????filePath?=?getSDCardPath();??
  76. ????????}?else??
  77. ????????{//?如果是內部存儲的路徑,則獲取內存存儲的可用容量??
  78. ????????????filePath?=?Environment.getDataDirectory().getAbsolutePath();??
  79. ????????}??
  80. ????????StatFs?stat?=?new?StatFs(filePath);??
  81. ????????long?availableBlocks?=?(long)?stat.getAvailableBlocks()?-?4;??
  82. ????????return?stat.getBlockSize()?*?availableBlocks;??
  83. ????}??
  84. ??
  85. ????/**?
  86. ?????*?獲取系統存儲路徑?
  87. ?????*??
  88. ?????*?@return?
  89. ?????*/??
  90. ????public?static?String?getRootDirectoryPath()??
  91. ????{??
  92. ????????return?Environment.getRootDirectory().getAbsolutePath();??
  93. ????}??
  94. ??
  95. ??
  96. }??

?

?

6、屏幕相關輔助類?ScreenUtils

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  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. /**?
  12. ?*?獲得屏幕相關的輔助類?
  13. ?*??
  14. ?*??
  15. ?*??
  16. ?*/??
  17. public?class?ScreenUtils??
  18. {??
  19. ????private?ScreenUtils()??
  20. ????{??
  21. ????????/*?cannot?be?instantiated?*/??
  22. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  23. ????}??
  24. ??
  25. ????/**?
  26. ?????*?獲得屏幕高度?
  27. ?????*??
  28. ?????*?@param?context?
  29. ?????*?@return?
  30. ?????*/??
  31. ????public?static?int?getScreenWidth(Context?context)??
  32. ????{??
  33. ????????WindowManager?wm?=?(WindowManager)?context??
  34. ????????????????.getSystemService(Context.WINDOW_SERVICE);??
  35. ????????DisplayMetrics?outMetrics?=?new?DisplayMetrics();??
  36. ????????wm.getDefaultDisplay().getMetrics(outMetrics);??
  37. ????????return?outMetrics.widthPixels;??
  38. ????}??
  39. ??
  40. ????/**?
  41. ?????*?獲得屏幕寬度?
  42. ?????*??
  43. ?????*?@param?context?
  44. ?????*?@return?
  45. ?????*/??
  46. ????public?static?int?getScreenHeight(Context?context)??
  47. ????{??
  48. ????????WindowManager?wm?=?(WindowManager)?context??
  49. ????????????????.getSystemService(Context.WINDOW_SERVICE);??
  50. ????????DisplayMetrics?outMetrics?=?new?DisplayMetrics();??
  51. ????????wm.getDefaultDisplay().getMetrics(outMetrics);??
  52. ????????return?outMetrics.heightPixels;??
  53. ????}??
  54. ??
  55. ????/**?
  56. ?????*?獲得狀態欄的高度?
  57. ?????*??
  58. ?????*?@param?context?
  59. ?????*?@return?
  60. ?????*/??
  61. ????public?static?int?getStatusHeight(Context?context)??
  62. ????{??
  63. ??
  64. ????????int?statusHeight?=?-1;??
  65. ????????try??
  66. ????????{??
  67. ????????????Class<?>?clazz?=?Class.forName("com.android.internal.R$dimen");??
  68. ????????????Object?object?=?clazz.newInstance();??
  69. ????????????int?height?=?Integer.parseInt(clazz.getField("status_bar_height")??
  70. ????????????????????.get(object).toString());??
  71. ????????????statusHeight?=?context.getResources().getDimensionPixelSize(height);??
  72. ????????}?catch?(Exception?e)??
  73. ????????{??
  74. ????????????e.printStackTrace();??
  75. ????????}??
  76. ????????return?statusHeight;??
  77. ????}??
  78. ??
  79. ????/**?
  80. ?????*?獲取當前屏幕截圖,包含狀態欄?
  81. ?????*??
  82. ?????*?@param?activity?
  83. ?????*?@return?
  84. ?????*/??
  85. ????public?static?Bitmap?snapShotWithStatusBar(Activity?activity)??
  86. ????{??
  87. ????????View?view?=?activity.getWindow().getDecorView();??
  88. ????????view.setDrawingCacheEnabled(true);??
  89. ????????view.buildDrawingCache();??
  90. ????????Bitmap?bmp?=?view.getDrawingCache();??
  91. ????????int?width?=?getScreenWidth(activity);??
  92. ????????int?height?=?getScreenHeight(activity);??
  93. ????????Bitmap?bp?=?null;??
  94. ????????bp?=?Bitmap.createBitmap(bmp,?0,?0,?width,?height);??
  95. ????????view.destroyDrawingCache();??
  96. ????????return?bp;??
  97. ??
  98. ????}??
  99. ??
  100. ????/**?
  101. ?????*?獲取當前屏幕截圖,不包含狀態欄?
  102. ?????*??
  103. ?????*?@param?activity?
  104. ?????*?@return?
  105. ?????*/??
  106. ????public?static?Bitmap?snapShotWithoutStatusBar(Activity?activity)??
  107. ????{??
  108. ????????View?view?=?activity.getWindow().getDecorView();??
  109. ????????view.setDrawingCacheEnabled(true);??
  110. ????????view.buildDrawingCache();??
  111. ????????Bitmap?bmp?=?view.getDrawingCache();??
  112. ????????Rect?frame?=?new?Rect();??
  113. ????????activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);??
  114. ????????int?statusBarHeight?=?frame.top;??
  115. ??
  116. ????????int?width?=?getScreenWidth(activity);??
  117. ????????int?height?=?getScreenHeight(activity);??
  118. ????????Bitmap?bp?=?null;??
  119. ????????bp?=?Bitmap.createBitmap(bmp,?0,?statusBarHeight,?width,?height??
  120. ????????????????-?statusBarHeight);??
  121. ????????view.destroyDrawingCache();??
  122. ????????return?bp;??
  123. ??
  124. ????}??
  125. ??
  126. }??

?

7、App相關輔助類

?

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?android.content.Context;??
  4. import?android.content.pm.PackageInfo;??
  5. import?android.content.pm.PackageManager;??
  6. import?android.content.pm.PackageManager.NameNotFoundException;??
  7. ??
  8. /**?
  9. ?*?跟App相關的輔助類?
  10. ?*??
  11. ?*??
  12. ?*??
  13. ?*/??
  14. public?class?AppUtils??
  15. {??
  16. ??
  17. ????private?AppUtils()??
  18. ????{??
  19. ????????/*?cannot?be?instantiated?*/??
  20. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  21. ??
  22. ????}??
  23. ??
  24. ????/**?
  25. ?????*?獲取應用程序名稱?
  26. ?????*/??
  27. ????public?static?String?getAppName(Context?context)??
  28. ????{??
  29. ????????try??
  30. ????????{??
  31. ????????????PackageManager?packageManager?=?context.getPackageManager();??
  32. ????????????PackageInfo?packageInfo?=?packageManager.getPackageInfo(??
  33. ????????????????????context.getPackageName(),?0);??
  34. ????????????int?labelRes?=?packageInfo.applicationInfo.labelRes;??
  35. ????????????return?context.getResources().getString(labelRes);??
  36. ????????}?catch?(NameNotFoundException?e)??
  37. ????????{??
  38. ????????????e.printStackTrace();??
  39. ????????}??
  40. ????????return?null;??
  41. ????}??
  42. ??
  43. ????/**?
  44. ?????*?[獲取應用程序版本名稱信息]?
  45. ?????*??
  46. ?????*?@param?context?
  47. ?????*?@return?當前應用的版本名稱?
  48. ?????*/??
  49. ????public?static?String?getVersionName(Context?context)??
  50. ????{??
  51. ????????try??
  52. ????????{??
  53. ????????????PackageManager?packageManager?=?context.getPackageManager();??
  54. ????????????PackageInfo?packageInfo?=?packageManager.getPackageInfo(??
  55. ????????????????????context.getPackageName(),?0);??
  56. ????????????return?packageInfo.versionName;??
  57. ??
  58. ????????}?catch?(NameNotFoundException?e)??
  59. ????????{??
  60. ????????????e.printStackTrace();??
  61. ????????}??
  62. ????????return?null;??
  63. ????}??
  64. ??
  65. }??

?

8、軟鍵盤相關輔助類KeyBoardUtils

?

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?android.content.Context;??
  4. import?android.view.inputmethod.InputMethodManager;??
  5. import?android.widget.EditText;??
  6. ??
  7. /**?
  8. ?*?打開或關閉軟鍵盤?
  9. ?*??
  10. ?*?@author?zhy?
  11. ?*??
  12. ?*/??
  13. public?class?KeyBoardUtils??
  14. {??
  15. ????/**?
  16. ?????*?打卡軟鍵盤?
  17. ?????*??
  18. ?????*?@param?mEditText?
  19. ?????*????????????輸入框?
  20. ?????*?@param?mContext?
  21. ?????*????????????上下文?
  22. ?????*/??
  23. ????public?static?void?openKeybord(EditText?mEditText,?Context?mContext)??
  24. ????{??
  25. ????????InputMethodManager?imm?=?(InputMethodManager)?mContext??
  26. ????????????????.getSystemService(Context.INPUT_METHOD_SERVICE);??
  27. ????????imm.showSoftInput(mEditText,?InputMethodManager.RESULT_SHOWN);??
  28. ????????imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,??
  29. ????????????????InputMethodManager.HIDE_IMPLICIT_ONLY);??
  30. ????}??
  31. ??
  32. ????/**?
  33. ?????*?關閉軟鍵盤?
  34. ?????*??
  35. ?????*?@param?mEditText?
  36. ?????*????????????輸入框?
  37. ?????*?@param?mContext?
  38. ?????*????????????上下文?
  39. ?????*/??
  40. ????public?static?void?closeKeybord(EditText?mEditText,?Context?mContext)??
  41. ????{??
  42. ????????InputMethodManager?imm?=?(InputMethodManager)?mContext??
  43. ????????????????.getSystemService(Context.INPUT_METHOD_SERVICE);??
  44. ??
  45. ????????imm.hideSoftInputFromWindow(mEditText.getWindowToken(),?0);??
  46. ????}??
  47. }??

?

9、網絡相關輔助類?NetUtils

?

?

[java]?view plaincopy
  1. package?com.zhy.utils;??
  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. /**?
  11. ?*?跟網絡相關的工具類?
  12. ?*??
  13. ?*??
  14. ?*??
  15. ?*/??
  16. public?class?NetUtils??
  17. {??
  18. ????private?NetUtils()??
  19. ????{??
  20. ????????/*?cannot?be?instantiated?*/??
  21. ????????throw?new?UnsupportedOperationException("cannot?be?instantiated");??
  22. ????}??
  23. ??
  24. ????/**?
  25. ?????*?判斷網絡是否連接?
  26. ?????*??
  27. ?????*?@param?context?
  28. ?????*?@return?
  29. ?????*/??
  30. ????public?static?boolean?isConnected(Context?context)??
  31. ????{??
  32. ??
  33. ????????ConnectivityManager?connectivity?=?(ConnectivityManager)?context??
  34. ????????????????.getSystemService(Context.CONNECTIVITY_SERVICE);??
  35. ??
  36. ????????if?(null?!=?connectivity)??
  37. ????????{??
  38. ??
  39. ????????????NetworkInfo?info?=?connectivity.getActiveNetworkInfo();??
  40. ????????????if?(null?!=?info?&&?info.isConnected())??
  41. ????????????{??
  42. ????????????????if?(info.getState()?==?NetworkInfo.State.CONNECTED)??
  43. ????????????????{??
  44. ????????????????????return?true;??
  45. ????????????????}??
  46. ????????????}??
  47. ????????}??
  48. ????????return?false;??
  49. ????}??
  50. ??
  51. ????/**?
  52. ?????*?判斷是否是wifi連接?
  53. ?????*/??
  54. ????public?static?boolean?isWifi(Context?context)??
  55. ????{??
  56. ????????ConnectivityManager?cm?=?(ConnectivityManager)?context??
  57. ????????????????.getSystemService(Context.CONNECTIVITY_SERVICE);??
  58. ??
  59. ????????if?(cm?==?null)??
  60. ????????????return?false;??
  61. ????????return?cm.getActiveNetworkInfo().getType()?==?ConnectivityManager.TYPE_WIFI;??
  62. ??
  63. ????}??
  64. ??
  65. ????/**?
  66. ?????*?打開網絡設置界面?
  67. ?????*/??
  68. ????public?static?void?openSetting(Activity?activity)??
  69. ????{??
  70. ????????Intent?intent?=?new?Intent("/");??
  71. ????????ComponentName?cm?=?new?ComponentName("com.android.settings",??
  72. ????????????????"com.android.settings.WirelessSettings");??
  73. ????????intent.setComponent(cm);??
  74. ????????intent.setAction("android.intent.action.VIEW");??
  75. ????????activity.startActivityForResult(intent,?0);??
  76. ????}??
  77. ??
  78. }??

?

?

10、Http相關輔助類?HttpUtils

[java]?view plaincopy
  1. package?com.zhy.utils;??
  2. ??
  3. import?java.io.BufferedReader;??
  4. import?java.io.ByteArrayOutputStream;??
  5. import?java.io.IOException;??
  6. import?java.io.InputStream;??
  7. import?java.io.InputStreamReader;??
  8. import?java.io.PrintWriter;??
  9. import?java.net.HttpURLConnection;??
  10. import?java.net.URL;??
  11. ??
  12. /**?
  13. ?*?Http請求的工具類?
  14. ?*??
  15. ?*?@author?zhy?
  16. ?*??
  17. ?*/??
  18. public?class?HttpUtils??
  19. {??
  20. ??
  21. ????private?static?final?int?TIMEOUT_IN_MILLIONS?=?5000;??
  22. ??
  23. ????public?interface?CallBack??
  24. ????{??
  25. ????????void?onRequestComplete(String?result);??
  26. ????}??
  27. ??
  28. ??
  29. ????/**?
  30. ?????*?異步的Get請求?
  31. ?????*??
  32. ?????*?@param?urlStr?
  33. ?????*?@param?callBack?
  34. ?????*/??
  35. ????public?static?void?doGetAsyn(final?String?urlStr,?final?CallBack?callBack)??
  36. ????{??
  37. ????????new?Thread()??
  38. ????????{??
  39. ????????????public?void?run()??
  40. ????????????{??
  41. ????????????????try??
  42. ????????????????{??
  43. ????????????????????String?result?=?doGet(urlStr);??
  44. ????????????????????if?(callBack?!=?null)??
  45. ????????????????????{??
  46. ????????????????????????callBack.onRequestComplete(result);??
  47. ????????????????????}??
  48. ????????????????}?catch?(Exception?e)??
  49. ????????????????{??
  50. ????????????????????e.printStackTrace();??
  51. ????????????????}??
  52. ??
  53. ????????????};??
  54. ????????}.start();??
  55. ????}??
  56. ??
  57. ????/**?
  58. ?????*?異步的Post請求?
  59. ?????*?@param?urlStr?
  60. ?????*?@param?params?
  61. ?????*?@param?callBack?
  62. ?????*?@throws?Exception?
  63. ?????*/??
  64. ????public?static?void?doPostAsyn(final?String?urlStr,?final?String?params,??
  65. ????????????final?CallBack?callBack)?throws?Exception??
  66. ????{??
  67. ????????new?Thread()??
  68. ????????{??
  69. ????????????public?void?run()??
  70. ????????????{??
  71. ????????????????try??
  72. ????????????????{??
  73. ????????????????????String?result?=?doPost(urlStr,?params);??
  74. ????????????????????if?(callBack?!=?null)??
  75. ????????????????????{??
  76. ????????????????????????callBack.onRequestComplete(result);??
  77. ????????????????????}??
  78. ????????????????}?catch?(Exception?e)??
  79. ????????????????{??
  80. ????????????????????e.printStackTrace();??
  81. ????????????????}??
  82. ??
  83. ????????????};??
  84. ????????}.start();??
  85. ??
  86. ????}??
  87. ??
  88. ????/**?
  89. ?????*?Get請求,獲得返回數據?
  90. ?????*??
  91. ?????*?@param?urlStr?
  92. ?????*?@return?
  93. ?????*?@throws?Exception?
  94. ?????*/??
  95. ????public?static?String?doGet(String?urlStr)???
  96. ????{??
  97. ????????URL?url?=?null;??
  98. ????????HttpURLConnection?conn?=?null;??
  99. ????????InputStream?is?=?null;??
  100. ????????ByteArrayOutputStream?baos?=?null;??
  101. ????????try??
  102. ????????{??
  103. ????????????url?=?new?URL(urlStr);??
  104. ????????????conn?=?(HttpURLConnection)?url.openConnection();??
  105. ????????????conn.setReadTimeout(TIMEOUT_IN_MILLIONS);??
  106. ????????????conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);??
  107. ????????????conn.setRequestMethod("GET");??
  108. ????????????conn.setRequestProperty("accept",?"*/*");??
  109. ????????????conn.setRequestProperty("connection",?"Keep-Alive");??
  110. ????????????if?(conn.getResponseCode()?==?200)??
  111. ????????????{??
  112. ????????????????is?=?conn.getInputStream();??
  113. ????????????????baos?=?new?ByteArrayOutputStream();??
  114. ????????????????int?len?=?-1;??
  115. ????????????????byte[]?buf?=?new?byte[128];??
  116. ??
  117. ????????????????while?((len?=?is.read(buf))?!=?-1)??
  118. ????????????????{??
  119. ????????????????????baos.write(buf,?0,?len);??
  120. ????????????????}??
  121. ????????????????baos.flush();??
  122. ????????????????return?baos.toString();??
  123. ????????????}?else??
  124. ????????????{??
  125. ????????????????throw?new?RuntimeException("?responseCode?is?not?200?...?");??
  126. ????????????}??
  127. ??
  128. ????????}?catch?(Exception?e)??
  129. ????????{??
  130. ????????????e.printStackTrace();??
  131. ????????}?finally??
  132. ????????{??
  133. ????????????try??
  134. ????????????{??
  135. ????????????????if?(is?!=?null)??
  136. ????????????????????is.close();??
  137. ????????????}?catch?(IOException?e)??
  138. ????????????{??
  139. ????????????}??
  140. ????????????try??
  141. ????????????{??
  142. ????????????????if?(baos?!=?null)??
  143. ????????????????????baos.close();??
  144. ????????????}?catch?(IOException?e)??
  145. ????????????{??
  146. ????????????}??
  147. ????????????conn.disconnect();??
  148. ????????}??
  149. ??????????
  150. ????????return?null?;??
  151. ??
  152. ????}??
  153. ??
  154. ????/**??
  155. ?????*?向指定?URL?發送POST方法的請求??
  156. ?????*???
  157. ?????*?@param?url??
  158. ?????*????????????發送請求的?URL??
  159. ?????*?@param?param??
  160. ?????*????????????請求參數,請求參數應該是?name1=value1&name2=value2?的形式。??
  161. ?????*?@return?所代表遠程資源的響應結果??
  162. ?????*?@throws?Exception??
  163. ?????*/??
  164. ????public?static?String?doPost(String?url,?String?param)???
  165. ????{??
  166. ????????PrintWriter?out?=?null;??
  167. ????????BufferedReader?in?=?null;??
  168. ????????String?result?=?"";??
  169. ????????try??
  170. ????????{??
  171. ????????????URL?realUrl?=?new?URL(url);??
  172. ????????????//?打開和URL之間的連接??
  173. ????????????HttpURLConnection?conn?=?(HttpURLConnection)?realUrl??
  174. ????????????????????.openConnection();??
  175. ????????????//?設置通用的請求屬性??
  176. ????????????conn.setRequestProperty("accept",?"*/*");??
  177. ????????????conn.setRequestProperty("connection",?"Keep-Alive");??
  178. ????????????conn.setRequestMethod("POST");??
  179. ????????????conn.setRequestProperty("Content-Type",??
  180. ????????????????????"application/x-www-form-urlencoded");??
  181. ????????????conn.setRequestProperty("charset",?"utf-8");??
  182. ????????????conn.setUseCaches(false);??
  183. ????????????//?發送POST請求必須設置如下兩行??
  184. ????????????conn.setDoOutput(true);??
  185. ????????????conn.setDoInput(true);??
  186. ????????????conn.setReadTimeout(TIMEOUT_IN_MILLIONS);??
  187. ????????????conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);??
  188. ??
  189. ????????????if?(param?!=?null?&&?!param.trim().equals(""))??
  190. ????????????{??
  191. ????????????????//?獲取URLConnection對象對應的輸出流??
  192. ????????????????out?=?new?PrintWriter(conn.getOutputStream());??
  193. ????????????????//?發送請求參數??
  194. ????????????????out.print(param);??
  195. ????????????????//?flush輸出流的緩沖??
  196. ????????????????out.flush();??
  197. ????????????}??
  198. ????????????//?定義BufferedReader輸入流來讀取URL的響應??
  199. ????????????in?=?new?BufferedReader(??
  200. ????????????????????new?InputStreamReader(conn.getInputStream()));??
  201. ????????????String?line;??
  202. ????????????while?((line?=?in.readLine())?!=?null)??
  203. ????????????{??
  204. ????????????????result?+=?line;??
  205. ????????????}??
  206. ????????}?catch?(Exception?e)??
  207. ????????{??
  208. ????????????e.printStackTrace();??
  209. ????????}??
  210. ????????//?使用finally塊來關閉輸出流、輸入流??
  211. ????????finally??
  212. ????????{??
  213. ????????????try??
  214. ????????????{??
  215. ????????????????if?(out?!=?null)??
  216. ????????????????{??
  217. ????????????????????out.close();??
  218. ????????????????}??
  219. ????????????????if?(in?!=?null)??
  220. ????????????????{??
  221. ????????????????????in.close();??
  222. ????????????????}??
  223. ????????????}?catch?(IOException?ex)??
  224. ????????????{??
  225. ????????????????ex.printStackTrace();??
  226. ????????????}??
  227. ????????}??
  228. ????????return?result;??
  229. ????}??
  230. }??


如果大家在使用過程中出現什么錯誤,或者有更好的建議,歡迎大家留言提出~~可以不斷的改進這些類~

?

源碼點擊下載

轉載于:https://www.cnblogs.com/wi100sh/p/5461644.html

總結

以上是生活随笔為你收集整理的【转】 Android快速开发系列 10个常用工具类 -- 不错的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。