Skip to content

整理Android日常开发中常用的实用工具Utils

Notifications You must be signed in to change notification settings

oukanggui/AndroidPracticalUtils

Repository files navigation

AndroidPracticalUtils

一、初衷

整理Android日常开发中常用的实用工具Utils,包含Json处理、文本处理、尺寸转换、时间处理、设备信息获取、网络、软键盘、APP、SharedPreferences、Toast、Log、Runnable任务执行管理等实用工具,所有工具类均放在utilslib这个library module里面,app module为演示module,有兴趣的同学可以下载阅读或运行demo查看效果

二、引用

1、首先在项目根目录的build.gradle中添加jitpack maven仓库:

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

2、在项目引用module的build.gradle中添加如下依赖:

dependencies {
	        implementation 'com.github.oukanggui:AndroidPracticalUtils:v1.0'
	}

三、支持工具类以及功能说明--持续更新中

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的形式,防止在两个不同控件之间快速点击存在误判)

示例如下所示:

持续更新中

About

整理Android日常开发中常用的实用工具Utils

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages