天天看點

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

一、簡介

整理Android日常開發中常用的實用工具Utils,包含Json處理、文本處理、尺寸轉換、時間處理、裝置資訊擷取、網絡、軟鍵盤、APP、SharedPreferences、Toast、Log、Runnable任務執行管理等實用工具,所有代碼已上傳至GitHub,項目以及demo位址:https://github.com/oukanggui/AndroidPracticalUtils,所有工具類集均放在utilslib這個library module裡面,app module為示範module,有興趣的同學可以下載下傳閱讀或運作demo檢視效果

二、支援工具類以及功能說明–持續更新中

1、JsonUtil:

Json操作工具類,利用Gson通過泛型實作任意對象或清單對象與Json資料的轉換,支援功能如下:

1、将任意對象或清單轉為Json字元串

2、将Json字元串轉換為任意對象或清單(通過泛型)

支援具體功能方法使用說明如下:

方法名 功能說明
String toJson(Object object) 将對象轉化後的Json字元串
T parseJson(String json, Class<T> tClass) Json字元串轉換為泛型對象T
List<T> parseJson(String json, Type listType) Json字元串轉換為參數為泛型對象T的List清單

當将Json字元串轉化為List清單時,需要擷取List清單具體的Type對象(TypeToken),可以通過如下方式擷取:

new TypeToken<List<T>>(){}.getType()

其中T為泛型對象,在實際使用時替換為具體的實體類即可

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

2、TextUtil:

Text文本操作工具類TextUtil,目前支援功能如下:

1、字元串是否為空判斷

2、字元串是否全為空格判斷

3、郵箱格式判斷

4、手機号碼判斷

支援具體功能方法使用說明如下:

方法名 功能說明
boolean isEmpty(String str) 判斷字元串是否為空
boolean isBlank(final CharSequence s) 判斷字元串是否全為空格
boolean isEmail(String strEmail) 判斷一個字元串是否是郵箱格式,目前隻是簡單的通過字元串中是否含有@來判斷
boolean isPhoneNumber(String strPhone) 判斷一個字元串是否是11位手機号格式(正規表達式)

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

3、SharedPreferencesUtil

SharedPreferences操作工具類SharedPreferencesUtil,與原生保持功能一緻,目前支援功能如下:

1、save(put)與get:與原生保持一緻,支援儲存和擷取int、float、long、boolean、String、Set<String>

2、clear:清空SharedPreferences内容

3、remove:支援删除remove相應key對應的值

支援具體功能方法使用說明如下:

方法名 功能說明
void saveInt(Context context, String key, int value) 儲存int整型數值
void saveFloat(Context context, String key, float value) 儲存Float浮點型數值
void saveBoolean(Context context, String key, boolean value) 儲存Boolean數值
void saveLong(Context context, String key, long value) 儲存Long數值
void saveString(Context context, String key, String value) 儲存String數值
void saveStringSet(Context context, String key, Set<String> value) 儲存Set<String>數值
int getInt(Context context, String key, int defaultValue) 擷取相應key的整型數值
float getFloat(Context context, String key, float defaultValue) 擷取相應key的Float浮點型數值
boolean getBoolean(Context context, String key, boolean defaultValue) 擷取相應key的Boolean數值
long getLong(Context context, String key, long defaultValue) 擷取相應key的Long數值
String getString(Context context, String key, String defaultValue) 擷取相應key的String數值
Set<String> getStringSet(Context context, String key, Set<String> defaultValue) 擷取相應key的Set<String>數值
void clear(Context context) 清空sp檔案儲存的内容
void remove(Context context, String key) 移除key對應的内容

4、ToastUtil

Toast操作工具類,提供非阻塞式顯示Toast,防止出現連續點選Toast時的顯示問題,目前支援功能如下:

1、Toast顯示

2、Toast取消

支援具體功能方法使用說明如下:

方法名 功能說明
void showToast(final Context context, final CharSequence text, final int duration) 顯示Toast
void showToast(Context context, CharSequence text) 顯示Toast,預設顯示時長duration為Toast.LENGTH_SHORT
void cancelToast() 取消Toast的顯示

示例如下所示:(從其它工具的示範已經可以看到ToastUtil示範顯示的效果~)

注:如果想要處理由于連續點選,導緻Toast重複顯示相同内容的問題或者退出目前頁面後,Toast還會顯示的問題,可以參考部落格文章的解決方案:完美解決Android中Toast重複顯示相同内容的問題

5、LogUtil

日志Log操作工具類,支援日記列印以及輸出到檔案中進行存儲,便于Log記錄與持久化存儲:

1、Log列印到控制台

2、Log輸出到檔案儲存進行持久化存儲

使用注意事項:

1) 在使用LogUtil前需要調用init方法進行初始化(建議在Application中進行初始化),LogUtil.init(Context context, boolean isShowLog, boolean isWriteToFile) , 提供了兩個初始化開關參數:

a、isShowLog,是否列印日志,預設關閉

b、isWriteToFile,日志是否寫到檔案,預設關閉

2) 由于Log需要記錄到檔案中進行持久儲存,需要在Manifest中聲明檔案寫權限android.permission.WRITE_EXTERNAL_STORAGE

支援具體功能方法使用說明如下:

方法名 功能說明
void i(String tag, String msg) 列印Info level log
void d(String tag, String msg) 列印Debug level log
void v(String tag, String msg) 列印Verbose level log
void w(String tag, String msg) 列印Warn level log
void e(String tag, String msg) 列印Error level log

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

6、TimeUtil

時間Time操作工具類TimeUtil,目前支援功能如下:

1、擷取目前系統時間(格式為yyyy-MM-dd HH:mm:ss的字元串)

2、判斷兩個日期是否為同一天(yyyy-MM-dd HH:mm:ss格式的日期)

3、判斷兩個時間之間的相隔的秒數、分鐘數、小時數以及天數

支援具體功能方法使用說明如下:

方法名 功能說明
String getSystemCurrentTime() 擷取目前系統時間(格式為yyyy-MM-dd HH:mm:ss的字元串)
boolean isSameDay(String lastTime, String currentTime) 判斷兩個日期是否為同一天(yyyy-MM-dd HH:mm:ss格式的日期)
long twoDateGapSeconds(String startTime, String endTime) 計算兩個日期的時間相差多少秒
long twoDateGapMinutes(String startTime, String endTime) 計算兩個日期的時間相差多少分鐘
long twoDateGapHours(String startTime, String endTime) 計算兩個日期的時間相差多少小時
long twoDateGapDays(String startTime, String endTime) 計算兩個日期的時間相差多少天

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

7、SoftInputUtil

軟鍵盤操作工具類SoftInputUtil,支援功能如下:

1、軟鍵盤顯示(支援綁定view監聽輸入)

2、軟鍵盤隐藏(收起)

支援具體功能方法使用說明如下:

方法名 功能說明
void showSoftInput(Context context, View view) 顯示系統軟鍵盤,其中View為接收輸入内容的View
void hideSoftInput(Context context, View view) 隐藏系統軟鍵盤,其中View為接收輸入内容的View
void hideSoftInput(Activity activity) 隐藏系統軟鍵盤

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

8、DimenUtil

Dimen尺寸操作工具類DimenUtil,支援功能如下:

1、支援sp與px、dp與px之間的互相換算

支援具體功能方法使用說明如下:

方法名 功能說明
int dp2px(Context context, int dipValue) 轉換dp為px
int px2dp(Context context, int pxValue) 轉換px為dp
int sp2px(Context context, float spValue) 轉換sp為px
int px2sp(Context context, float pxValue) 轉換px為sp

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

9、AppUtil

App相關工具操作類,支援功能如下:

1、擷取自身以及第三方應用版本名稱以及版本号

2、檢測某應用是否已安裝

3、擷取某應用在手機的狀态(更新、已安裝、未安裝等)

4、啟動(打開)第三方APP

支援具體功能方法使用說明如下:

方法名 功能說明
String getAppVersionName(Context context) 擷取應用本身的版本名
String getAppVersionName(Context context, String packageName) 擷取第三方應用的版本名
int getAppVersionCode(Context context) 擷取應用本身的版本号
int getAppVersionCode(Context context, String packageName) 擷取第三方應用的版本号
boolean checkPackageInstalled(Context context, String packageName) 檢測該包名所對應的應用是否已安裝
int checkPackageStatus(Context context, String packageName, int versionCode) 判斷APP在手機的安裝狀态(未安裝、已安裝、更新等)
boolean openApp(Context context, String packageName) 啟動第三方APP

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

10、 NetworkUtil

網絡工具操作類NetworkUtil,目前支援功能如下:

1、擷取網絡IP位址

2、判斷網絡是否可用

3、判斷目前網絡是否連接配接WiFi

支援具體功能方法使用說明如下:

方法名 功能說明
String getIp() 擷取網絡IP位址
boolean isNetworkAvailable(Context context) 判斷目前網絡是否可用
boolean isWifiConnected(Context context) 判斷目前網絡是否連接配接WiFi

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

11、DeviceUtil

裝置操作工具類DeviceUtil,目前支援功能如下:

1、擷取裝置螢幕寬度和高度大小

2、擷取裝置IMEI号

3、擷取SIM卡IMSI号

4、擷取裝置MAC位址

支援具體功能方法使用說明如下:

方法名 功能說明
int getScreenWidth(Context context) 擷取裝置螢幕寬度(px)
int getScreenHeight(Context context) 擷取螢幕的高度(px)
String getImei(Context context) 擷取裝置IMEI号
String getImsi(Context context) 擷取SIM卡IMSI序列号
String getMacAddress(Context context) 擷取裝置Mac位址

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

12、SystemUtil

System操作工具類SystemUtil,目前支援功能如下:

1、判斷SD卡是否可用

2、擷取SD卡路徑

3、擷取系統型号

4、擷取系統版本号

5、擷取系統SDK版本号資訊

6、支援調用系統浏覽器打開網頁

7、支援打開系統分享選擇器

支援具體功能方法使用說明如下:

方法名 功能說明
boolean isSDCardAvailable() 判斷SD卡是否可用
String getSDCardPath() 擷取SDCard路徑
String getSystemModel() 擷取系統型号
String getSystemVersion() 擷取系統版本号
int getSDKVersion() 擷取系統SDK版本号
void openSystemBrowser(Context context,String url) 調用系統浏覽器打開網頁
void openSystemShareChooser(Context context, String title, String text) 打開系統分享選擇器

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

13、RunnableUtil

Runnable操作工具類RunnableUtil,通過内置線程池,提高任務執行效率,支援如下功能:

1、支援Runnable任務task立即以及排隊執行

支援具體功能方法使用說明如下:

方法名 功能說明
void runTask(Runnable task) 執行Runnable任務,預設為任務排隊執行
runTask(Runnable task, boolean immediate) 執行Runnable任務,immediate值表明任務是否立即執行,true:任務立即執行,false:任務排隊執行(預設值)

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

14、ViewUtil

View操作相關工具類ViewUtil,目前支援功能如下:

1、判斷兩次點選之間是否存在快速點選(支援重置)

支援具體功能方法使用說明如下:

方法名 功能說明
boolean isFastDoubleClick() 判斷兩次點選之間是否存在快速點選,預設兩次點選時間間隔門檻值為800ms
boolean isFastDoubleClick(long interval,boolean isReset) 判斷兩次點選之間是否存在快速點選,預設兩次點選時間間隔門檻值為800ms,isReset辨別需要是要重置,預設為false(由于記錄上次點選時間是采用static的形式,防止在兩個不同控件之間快速點選存在誤判)

示例如下所示:

Android日常開發實用工具集AndroidPracticalUtils(持續更新中)

三、下載下傳

項目所有代碼已上傳至GitHub,項目以及demo位址:https://github.com/oukanggui/AndroidPracticalUtils,有興趣的同學可以下載下傳閱讀或運作demo檢視效果

持續更新中