編輯:關於Android編程
Android常用工具類
主要介紹總結的Android開發中常用的工具類,大部分同樣適用於Java。
目前包括(HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageUtils、ListUtils、MapUtils、ObjectUtils、SerializeUtils、SystemUtils、TimeUtils)。
所有代碼都在 TrineaAndroidCommon@Github 中,除這些工具類外此項目還包括 緩存、下拉ListView 等。
詳細接口介紹可見TrineaAndroidCommon API Guide。
具體使用:可直接引入 TrineaAndroidCommon 作為你項目的 library ,或是自己抽取其中的部分使用。
1、HttpUtils
Http網絡工具類,主要包括httpGet、httpPost以及http參數相關方法,以httpGet為例:
static HttpResponse httpGet(HttpRequest request)
static HttpResponse httpGet(java.lang.String httpUrl)
static String httpGetString(String httpUrl)
包含以上三個方法,默認使用gzip壓縮,使用bufferedReader提高讀取速度。
HttpRequest中可以設置url、timeout、userAgent等其他http參數
HttpResponse中可以獲取返回內容、http響應碼、http過期時間(Cache-Control的max-age和expires)等
前兩個方法可以進行高級參數設置及豐富內容返回,第三個方法可以簡單的傳入url獲取返回內容,httpPost類似。更詳細的設置可以直接使用HttpURLConnection或apache的HttpClient。
源碼可見HttpUtils.java,更多方法及更詳細參數介紹可見HttpUtils Api Guide。
2、DownloadManagerPro
Android系統下載管理DownloadManager增強方法,可用於包括獲取下載相關信息,如:
getStatusById(long) 得到下載狀態
getDownloadBytes(long) 得到下載進度信息
getBytesAndStatus(long) 得到下載進度信息和狀態
getFileName(long) 得到下載文件路徑
getUri(long) 得到下載uri
getReason(long) 得到下載失敗或暫停原因
getPausedReason(long) 得到下載暫停原因
getErrorCode(long) 得到下載錯誤碼
源碼可見DownloadManagerPro.java,更多方法及更詳細參數介紹可見DownloadManagerPro Api Guide。
關於Android DownManager使用可見DownManager Demo。
3、ShellUtils
Android Shell工具類,可用於檢查系統root權限,並在shell或root用戶下執行shell命令。如:
checkRootPermission() 檢查root權限
execCommand(String[] commands, boolean isRoot, boolean isNeedResultMsg) shell環境執行命令,第二個參數表示是否root權限執行
execCommand(String command, boolean isRoot) shell環境執行命令
源碼可見ShellUtils.java,更多方法及更詳細參數介紹可見ShellUtils Api Guide。關於靜默安裝可見apk-root權限靜默安裝。
4、PackageUtils
Android包相關工具類,可用於(root)安裝應用、(root)卸載應用、判斷是否系統應用等,如:
install(Context, String) 安裝應用,如果是系統應用或已經root,則靜默安裝,否則一般安裝
uninstall(Context, String) 卸載應用,如果是系統應用或已經root,則靜默卸載,否則一般卸載
isSystemApplication(Context, String) 判斷應用是否為系統應用
源碼可見PackageUtils.java,更多方法及更詳細參數介紹可見ShellUtils Api Guide。關於靜默安裝可見apk-root權限靜默安裝。
5、PreferencesUtils
Android SharedPreferences相關工具類,可用於方便的向SharedPreferences中讀取和寫入相關類型數據,如:
putString(Context, String, String) 保存string類型數據
putInt(Context, String, int) 保存int類型數據
getString(Context, String) 獲取string類型數據
getInt(Context, String) 獲取int類型數據
可通過修改PREFERENCE_NAME變量修改preference name
源碼可見PreferencesUtils.java,更多方法及更詳細參數介紹可見PreferencesUtils Api Guide。
6、JSONUtils
JSONUtils工具類,可用於方便的向Json中讀取和寫入相關類型數據,如:
String getString(JSONObject jsonObject, String key, String defaultValue) 得到string類型value
String getString(String jsonData, String key, String defaultValue) 得到string類型value
表示從json中讀取某個String類型key的值
getMap(JSONObject jsonObject, String key) 得到map
getMap(String jsonData, String key) 得到map
表示從json中讀取某個Map類型key的值
源碼可見JSONUtils.java,更多方法及更詳細參數介紹可見JSONUtils Api Guide。
7、FileUtils
文件工具類,可用於讀寫文件及對文件進行操作。如:
readFile(String filePath) 讀文件
writeFile(String filePath, String content, boolean append) 寫文件
getFileSize(String path) 得到文件大小
deleteFile(String path) 刪除文件
源碼可見FileUtils.java,更多方法及更詳細參數介紹可見FileUtils Api Guide。
8、ResourceUtils
Android Resource工具類,可用於從android資源目錄的raw和assets目錄讀取內容,如:
geFileFromAssets(Context context, String fileName) 得到assets目錄下某個文件內容
geFileFromRaw(Context context, int resId) 得到raw目錄下某個文件內容
源碼可見ResourceUtils.java,更多方法及更詳細參數介紹可見ResourceUtils Api Guide。
9、StringUtils
String工具類,可用於常見字符串操作,如:
isEmpty(String str) 判斷字符串是否為空或長度為0
isBlank(String str) 判斷字符串是否為空或長度為0 或由空格組成
utf8Encode(String str) 以utf-8格式編碼
capitalizeFirstLetter(String str) 首字母大寫
源碼可見StringUtils.java,更多方法及更詳細參數介紹可見StringUtils Api Guide。
10、ParcelUtils
Android Parcel工具類,可用於從parcel讀取或寫入特殊類型數據,如:
readBoolean(Parcel in) 從pacel中讀取boolean類型數據
readHashMap(Parcel in, ClassLoader loader) 從pacel中讀取map類型數據
writeBoolean(boolean b, Parcel out) 向parcel中寫入boolean類型數據
writeHashMap(Map
源碼可見ParcelUtils.java,更多方法及更詳細參數介紹可見ParcelUtils Api Guide。
11、RandomUtils
隨機數工具類,可用於獲取固定大小固定字符內的隨機數,如:
getRandom(char[] sourceChar, int length) 生成隨機字符串,所有字符均在某個字符串內
getRandomNumbers(int length) 生成隨機數字
源碼可見RandomUtils.java,更多方法及更詳細參數介紹可見RandomUtils Api Guide。
12、ArrayUtils
數組工具類,可用於數組常用操作,如:
isEmpty(V[] sourceArray) 判斷數組是否為空或長度為0
getLast(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數組中某個元素前一個元素,isCircle表示是否循環
getNext(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到數組中某個元素下一個元素,isCircle表示是否循環
源碼可見ArrayUtils.java,更多方法及更詳細參數介紹可見ArrayUtils Api Guide。
13、ImageUtils
圖片工具類,可用於Bitmap, byte array, Drawable之間進行轉換以及圖片縮放,目前功能薄弱,後面會進行增強。如:
bitmapToDrawable(Bitmap b) bimap轉換為drawable
drawableToBitmap(Drawable d) drawable轉換為bitmap
drawableToByte(Drawable d) drawable轉換為byte
scaleImage(Bitmap org, float scaleWidth, float scaleHeight) 縮放圖片
源碼可見ImageUtils.java,更多方法及更詳細參數介紹可見ImageUtils Api Guide。
14、ListUtils
List工具類,可用於List常用操作,如:
isEmpty(List
join(List
addDistinctEntry(List
源碼可見ListUtils.java,更多方法及更詳細參數介紹可見ListUtils Api Guide。
15、MapUtils
Map工具類,可用於Map常用操作,如:
isEmpty(Map
parseKeyAndValueToMap(String source, String keyAndValueSeparator, String keyAndValuePairSeparator, boolean ignoreSpace) 字符串解析為map
toJson(Map
源碼可見MapUtils.java,更多方法及更詳細參數介紹可見MapUtils Api Guide。
16、ObjectUtils
Object工具類,可用於Object常用操作,如:
isEquals(Object actual, Object expected) 比較兩個對象是否相等
compare(V v1, V v2) 比較兩個對象大小
transformIntArray(int[] source) Integer 數組轉換為int數組
源碼可見ObjectUtils.java,更多方法及更詳細參數介紹可見ObjectUtils Api Guide。
17、SerializeUtils
序列化工具類,可用於序列化對象到文件或從文件反序列化對象,如:
deserialization(String filePath) 從文件反序列化對象
serialization(String filePath, Object obj) 序列化對象到文件
源碼可見SerializeUtils.java,更多方法及更詳細參數介紹可見SerializeUtils Api Guide。
18、SystemUtils
系統信息工具類,可用於得到線程池合適的大小,目前功能薄弱,後面會進行增強。如:
getDefaultThreadPoolSize() 得到跟系統配置相符的線程池大小
源碼可見SystemUtils.java,更多方法及更詳細參數介紹可見SystemUtils Api Guide。
19、TimeUtils
時間工具類,可用於時間相關操作,如:
getCurrentTimeInLong() 得到當前時間
getTime(long timeInMillis, SimpleDateFormat dateFormat) 將long轉換為固定格式時間字符串
源碼可見TimeUtils.java,更多方法及更詳細參數介紹可見TimeUtils Api Guide。
最近一直都在看自定義View這一塊。差不多一個星期了吧。這個星期堅持每天更新博客,感覺自己的技術也有點突破,對自定義View的計算也有了更深的認識。今天看到手機一個成長天
先看看效果吧根據官方APIDemo給出的Xfermode例子我們可以看到下圖展示那樣但是,說實話,看到這張圖,我是懵逼的,我們應該去自己試一試來加深下自己的理解,所以我畫
一、數據綁定框架DataBinding介紹:Android的新框架DataBinding給我們帶來了很大的方便,以前可能需要在每個Activity裡寫很多的findVie
說起空間動態、微博的點贊效果,網上也是很泛濫,各種實現與效果一大堆。而詳細實現的部分,講述的也是參差不齊,另一方面估計也有很多大俠也不屑一顧,覺得完全沒必要單獨開篇來寫和