一、簡介
整理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爲泛型對象,在實際使用時替換爲具體的實體類即可
示例如下所示:
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位手機號格式(正則表達式) |
示例如下所示:
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 |
示例如下所示:
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) | 計算兩個日期的時間相差多少天 |
示例如下所示:
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) | 隱藏系統軟鍵盤 |
示例如下所示:
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 |
示例如下所示:
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 |
示例如下所示:
10、 NetworkUtil
網絡工具操作類NetworkUtil,目前支持功能如下:
1、獲取網絡IP地址
2、判斷網絡是否可用
3、判斷當前網絡是否連接WiFi
支持具體功能方法使用說明如下:
方法名 | 功能說明 |
---|---|
String getIp() | 獲取網絡IP地址 |
boolean isNetworkAvailable(Context context) | 判斷當前網絡是否可用 |
boolean isWifiConnected(Context context) | 判斷當前網絡是否連接WiFi |
示例如下所示:
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地址 |
示例如下所示:
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) | 打開系統分享選擇器 |
示例如下所示:
13、RunnableUtil
Runnable操作工具類RunnableUtil,通過內置線程池,提高任務執行效率,支持如下功能:
1、支持Runnable任務task立即以及排隊執行
支持具體功能方法使用說明如下:
方法名 | 功能說明 |
---|---|
void runTask(Runnable task) | 執行Runnable任務,默認爲任務排隊執行 |
runTask(Runnable task, boolean immediate) | 執行Runnable任務,immediate值表明任務是否立即執行,true:任務立即執行,false:任務排隊執行(默認值) |
示例如下所示:
14、ViewUtil
View操作相關工具類ViewUtil,目前支持功能如下:
1、判斷兩次點擊之間是否存在快速點擊(支持重置)
支持具體功能方法使用說明如下:
方法名 | 功能說明 |
---|---|
boolean isFastDoubleClick() | 判斷兩次點擊之間是否存在快速點擊,默認兩次點擊時間間隔閾值爲800ms |
boolean isFastDoubleClick(long interval,boolean isReset) | 判斷兩次點擊之間是否存在快速點擊,默認兩次點擊時間間隔閾值爲800ms,isReset標識需要是要重置,默認爲false(由於記錄上次點擊時間是採用static的形式,防止在兩個不同控件之間快速點擊存在誤判) |
示例如下所示:
三、下載
項目所有代碼已上傳至GitHub,項目以及demo地址:https://github.com/oukanggui/AndroidPracticalUtils,有興趣的同學可以下載閱讀或運行demo查看效果