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爲泛型對象,在實際使用時替換爲具體的實體類即可

示例如下所示:

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查看效果

持續更新中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章