主要介紹總結(jié)的Android開發(fā)中常用的工具類,大部分同樣適用于Java。
目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageUtils、ListUtils、MapUtils、ObjectUtils、SerializeUtils、SystemUtils、TimeUtils。
The English version of this article see:Android Common Utils
所有代碼都在中,歡迎Star或Fork^_*,除這些工具類外此項(xiàng)目還包括緩存、下拉ListView等。詳細(xì)接口介紹可見TrineaAndroidCommon API Guide。
具體使用:可直接引入TrineaAndroidCommon作為你項(xiàng)目的library(如何拉取代碼及添加公共庫),或是自己抽取其中的部分使用。
1、HttpUtils
Http網(wǎng)絡(luò)工具類,主要包括httpGet、httpPost以及http參數(shù)相關(guān)方法,以httpGet為例:
static HttpResponse httpGet(HttpRequest request)
static HttpResponse httpGet(java.lang.String httpUrl)
static String httpGetString(String httpUrl)
包含以上三個(gè)方法,默認(rèn)使用gzip壓縮,使用bufferedReader提高讀取速度。
HttpRequest中可以設(shè)置url、timeout、userAgent等其他http參數(shù)
HttpResponse中可以獲取返回內(nèi)容、http響應(yīng)碼、http過期時(shí)間(Cache-Control的max-age和expires)等
前兩個(gè)方法可以進(jìn)行高級(jí)參數(shù)設(shè)置及豐富內(nèi)容返回,第三個(gè)方法可以簡單的傳入url獲取返回內(nèi)容,httpPost類似。更詳細(xì)的設(shè)置可以直接使用HttpURLConnection或apache的HttpClient。
源碼可見HttpUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見HttpUtils Api Guide。
2、DownloadManagerPro
Android系統(tǒng)下載管理DownloadManager增強(qiáng)方法,可用于包括獲取下載相關(guān)信息,如:
getStatusById(long) 得到下載狀態(tài)
getDownloadBytes(long) 得到下載進(jìn)度信息
getBytesAndStatus(long) 得到下載進(jìn)度信息和狀態(tài)
getFileName(long) 得到下載文件路徑
getUri(long) 得到下載uri
getReason(long) 得到下載失敗或暫停原因
getPausedReason(long) 得到下載暫停原因
getErrorCode(long) 得到下載錯(cuò)誤碼
源碼可見DownloadManagerPro.java,更多方法及更詳細(xì)參數(shù)介紹可見DownloadManagerPro Api Guide。關(guān)于Android DownManager使用可見DownManager Demo。
3、ShellUtils
Android Shell工具類,可用于檢查系統(tǒng)root權(quán)限,并在shell或root用戶下執(zhí)行shell命令。如:
checkRootPermission() 檢查root權(quán)限
execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg) shell環(huán)境執(zhí)行命令,第二個(gè)參數(shù)表示是否root權(quán)限執(zhí)行
execCommand(String command, boolean isRoot) shell環(huán)境執(zhí)行命令
源碼可見ShellUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ShellUtils Api Guide。關(guān)于靜默安裝可見apk-root權(quán)限靜默安裝。
4、PackageUtils
Android包相關(guān)工具類,可用于(root)安裝應(yīng)用、(root)卸載應(yīng)用、判斷是否系統(tǒng)應(yīng)用等,如:
install(Context, String) 安裝應(yīng)用,如果是系統(tǒng)應(yīng)用或已經(jīng)root,則靜默安裝,否則一般安裝
uninstall(Context, String) 卸載應(yīng)用,如果是系統(tǒng)應(yīng)用或已經(jīng)root,則靜默卸載,否則一般卸載
isSystemApplication(Context, String) 判斷應(yīng)用是否為系統(tǒng)應(yīng)用
源碼可見PackageUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ShellUtils Api Guide。關(guān)于靜默安裝可見apk-root權(quán)限靜默安裝。
5、PreferencesUtils
Android SharedPreferences相關(guān)工具類,可用于方便的向SharedPreferences中讀取和寫入相關(guān)類型數(shù)據(jù),如:
putString(Context, String, String) 保存string類型數(shù)據(jù)
putInt(Context, String, int) 保存int類型數(shù)據(jù)
getString(Context, String) 獲取string類型數(shù)據(jù)
getInt(Context, String) 獲取int類型數(shù)據(jù)
可通過修改PREFERENCE_NAME變量修改preference name
源碼可見PreferencesUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見PreferencesUtils Api Guide。
6、JSONUtils
JSONUtils工具類,可用于方便的向Json中讀取和寫入相關(guān)類型數(shù)據(jù),如:
String getString(JSONObject jsonObject, String key, String defaultValue) 得到string類型value
String getString(String jsonData, String key, String defaultValue) 得到string類型value
表示從json中讀取某個(gè)String類型key的值
getMap(JSONObject jsonObject, String key) 得到map
getMap(String jsonData, String key) 得到map
表示從json中讀取某個(gè)Map類型key的值
源碼可見JSONUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見JSONUtils Api Guide。
7、FileUtils
文件工具類,可用于讀寫文件及對(duì)文件進(jìn)行操作。如:
readFile(String filePath) 讀文件
writeFile(String filePath, String content, boolean append) 寫文件
getFileSize(String path) 得到文件大小
deleteFile(String path) 刪除文件
源碼可見FileUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見FileUtils Api Guide。
8、ResourceUtils
Android Resource工具類,可用于從android資源目錄的raw和assets目錄讀取內(nèi)容,如:
geFileFromAssets(Context context, String fileName) 得到assets目錄下某個(gè)文件內(nèi)容
geFileFromRaw(Context context, int resId) 得到raw目錄下某個(gè)文件內(nèi)容
源碼可見ResourceUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ResourceUtils Api Guide。
9、StringUtils
String工具類,可用于常見字符串操作,如:
isEmpty(String str) 判斷字符串是否為空或長度為0
isBlank(String str) 判斷字符串是否為空或長度為0 或由空格組成
utf8Encode(String str) 以u(píng)tf-8格式編碼
capitalizeFirstLetter(String str) 首字母大寫
源碼可見StringUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見StringUtils Api Guide。
10、ParcelUtils
Android Parcel工具類,可用于從parcel讀取或?qū)懭胩厥忸愋蛿?shù)據(jù),如:
readBoolean(Parcel in) 從pacel中讀取boolean類型數(shù)據(jù)
readHashMap(Parcel in, ClassLoader loader) 從pacel中讀取map類型數(shù)據(jù)
writeBoolean(boolean b, Parcel out) 向parcel中寫入boolean類型數(shù)據(jù)
writeHashMap(Map<K, V> map, Parcel out, int flags) 向parcel中寫入map類型數(shù)據(jù)
源碼可見ParcelUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ParcelUtils Api Guide。
11、RandomUtils
隨機(jī)數(shù)工具類,可用于獲取固定大小固定字符內(nèi)的隨機(jī)數(shù),如:
getRandom(char[] sourceChar, int length) 生成隨機(jī)字符串,所有字符均在某個(gè)字符串內(nèi)
getRandomNumbers(int length) 生成隨機(jī)數(shù)字
源碼可見RandomUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見RandomUtils Api Guide。
12、ArrayUtils
數(shù)組工具類,可用于數(shù)組常用操作,如:
isEmpty(V[] sourceArray) 判斷數(shù)組是否為空或長度為0
getLast(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數(shù)組中某個(gè)元素前一個(gè)元素,isCircle表示是否循環(huán)
getNext(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數(shù)組中某個(gè)元素下一個(gè)元素,isCircle表示是否循環(huán)
源碼可見ArrayUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ArrayUtils Api Guide。
13、ImageUtils
圖片工具類,可用于Bitmap, byte array, Drawable之間進(jìn)行轉(zhuǎn)換以及圖片縮放,目前功能薄弱,后面會(huì)進(jìn)行增強(qiáng)。如:
bitmapToDrawable(Bitmap b) bimap轉(zhuǎn)換為drawable
drawableToBitmap(Drawable d) drawable轉(zhuǎn)換為bitmap
drawableToByte(Drawable d) drawable轉(zhuǎn)換為byte
scaleImage(Bitmap org, float scaleWidth, float scaleHeight) 縮放圖片
源碼可見ImageUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ImageUtils Api Guide。
14、ListUtils
List工具類,可用于List常用操作,如:
isEmpty(List<V> sourceList) 判斷List是否為空或長度為0
join(List<String> list, String separator) List轉(zhuǎn)換為字符串,并以固定分隔符分割
addDistinctEntry(List<V> sourceList, V entry) 向list中添加不重復(fù)元素
源碼可見ListUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ListUtils Api Guide。
15、MapUtils
Map工具類,可用于Map常用操作,如:
isEmpty(Map<K, V> sourceMap) 判斷map是否為空或長度為0
parseKeyAndValueToMap(String source, String keyAndValueSeparator, String keyAndValuePairSeparator, boolean ignoreSpace) 字符串解析為map
toJson(Map<String, String> map) map轉(zhuǎn)換為json格式
源碼可見MapUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見MapUtils Api Guide。
16、ObjectUtils
Object工具類,可用于Object常用操作,如:
isEquals(Object actual, Object expected) 比較兩個(gè)對(duì)象是否相等
compare(V v1, V v2) 比較兩個(gè)對(duì)象大小
transformIntArray(int[] source) Integer 數(shù)組轉(zhuǎn)換為int數(shù)組
源碼可見ObjectUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見ObjectUtils Api Guide。
17、SerializeUtils
序列化工具類,可用于序列化對(duì)象到文件或從文件反序列化對(duì)象,如:
deserialization(String filePath) 從文件反序列化對(duì)象
serialization(String filePath, Object obj) 序列化對(duì)象到文件
源碼可見SerializeUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見SerializeUtils Api Guide。
18、SystemUtils
系統(tǒng)信息工具類,可用于得到線程池合適的大小,目前功能薄弱,后面會(huì)進(jìn)行增強(qiáng)。如:
getDefaultThreadPoolSize() 得到跟系統(tǒng)配置相符的線程池大小
源碼可見SystemUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見SystemUtils Api Guide。
19、TimeUtils
時(shí)間工具類,可用于時(shí)間相關(guān)操作,如:
getCurrentTimeInLong() 得到當(dāng)前時(shí)間
getTime(long timeInMillis, SimpleDateFormat dateFormat) 將long轉(zhuǎn)換為固定格式時(shí)間字符串
源碼可見TimeUtils.java,更多方法及更詳細(xì)參數(shù)介紹可見TimeUtils Api Guide。
更多信息請(qǐng)查看IT技術(shù)專欄