android:Android开发不得不收藏的Utils
Posted blog4wei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android:Android开发不得不收藏的Utils相关的知识,希望对你有一定的参考价值。
- androidUtils
AndroidUtils Android开发不得不收藏的Utils
之前写这篇文章主要是项目应用到的Utils,发现已经有一个更全面的开源库总结,所以还是非常震惊可以总结的这么全面,在此我准备重新梳理一遍~
AndroidUtils:Android必备utilCode
具体Demo使用参考开源github:AndroidUtilCode。本文只是稍微记录下方便自己查阅。
- Activity相关→ActivityUtils.java
![技术分享图片](https://image.cha138.com/20210729/4cfb87b653264b069810f7cd9526536e.jpg)
- App相关→AppUtils.java
![技术分享图片](https://image.cha138.com/20210729/611202e5a4244b5b9567992aafe6acbf.jpg)
- 状态栏相关→BarUtils.java
![技术分享图片](https://image.cha138.com/20210729/0c8295a3a8084d2193b4a753602b2978.jpg)
- 清除相关→CleanUtils.java
![技术分享图片](https://image.cha138.com/20210729/71a23094d7d84cc18c08ab56d9ef78aa.jpg)
- 剪贴板相关→ClipboardUtils.java
![技术分享图片](https://image.cha138.com/20210729/2f89318375b844cc8b91a54b163da7cb.jpg)
- 关闭相关→CloseUtils.java
![技术分享图片](https://image.cha138.com/20210729/db56699d05a54e7d8d7287e34fd2fd8b.jpg)
- 常量相关→ConstUtils.java
![技术分享图片](https://image.cha138.com/20210729/4e92c47d03e24488a4e458687c6b0637.jpg)
- 转换相关→ConvertUtils.java
![技术分享图片](https://image.cha138.com/20210729/898132c799e041d98f18c116603e446d.jpg)
- 崩溃相关→CrashUtils.java
![技术分享图片](https://image.cha138.com/20210729/ddc3246062d3408aa94e41a583eee29a.jpg)
- 设备相关→DeviceUtils.java
![技术分享图片](https://image.cha138.com/20210729/0d4060f57c344d289f41b29c999a3c53.jpg)
- 判空相关→EmptyUtils.java
![技术分享图片](https://image.cha138.com/20210729/c6a8a15bc684419592aede69d4b9024a.jpg)
- 编码解码相关→EncodeUtils.java
![技术分享图片](https://image.cha138.com/20210729/d45a61e8f7d34569944f4941733cbad7.jpg)
- 加密解密相关→EncryptUtils.java
![技术分享图片](https://image.cha138.com/20210729/5f4ea1904eed4519b7fff2391aebb452.jpg)
- 文件相关→FileUtils.java
getFileByPath : 根据文件路径获取文件
isFileExists : 判断文件是否存在
rename : 重命名文件
isDir : 判断是否是目录
isFile : 判断是否是文件
createOrExistsDir : 判断目录是否存在,不存在则判断是否创建成功
createOrExistsFile : 判断文件是否存在,不存在则判断是否创建成功
createFileByDeleteOldFile: 判断文件是否存在,存在则在创建之前删除
copyDir : 复制目录
copyFile : 复制文件
moveDir : 移动目录
moveFile : 移动文件
deleteDir : 删除目录
deleteFile : 删除文件
listFilesInDir : 获取目录下所有文件
listFilesInDir : 获取目录下所有文件包括子目录
listFilesInDirWithFilter : 获取目录下所有后缀名为suffix的文件
listFilesInDirWithFilter : 获取目录下所有后缀名为suffix的文件包括子目录
listFilesInDirWithFilter : 获取目录下所有符合filter的文件
listFilesInDirWithFilter : 获取目录下所有符合filter的文件包括子目录
searchFileInDir : 获取目录下指定文件名的文件包括子目录
writeFileFromIS : 将输入流写入文件
writeFileFromString : 将字符串写入文件
readFile2List : 指定编码按行读取文件到链表中
readFile2String : 指定编码按行读取文件到字符串中
readFile2Bytes : 读取文件到字符数组中
getFileLastModified : 获取文件最后修改的毫秒时间戳
getFileCharsetSimple : 简单获取文件编码格式
getFileLines : 获取文件行数
getDirSize : 获取目录大小
getFileSize : 获取文件大小
getDirLength : 获取目录长度
getFileLength : 获取文件长度
getFileMD5 : 获取文件的MD5校验码
getFileMD5ToString : 获取文件的MD5校验码
getDirName : 根据全路径获取最长目录
getFileName : 根据全路径获取文件名
getFileNameNoExtension : 根据全路径获取文件名不带拓展名
getFileExtension : 根据全路径获取文件拓展名
- Handler相关→HandlerUtils.java
![技术分享图片](https://image.cha138.com/20210729/8d894e8f51dc4447a4272415f60e90f9.jpg)
- 图片相关→ImageUtils.java
![技术分享图片](https://image.cha138.com/20210729/a36bed90c69a4b27a56f5fe241156ce0.jpg)
- 意图相关→IntentUtils.java
![技术分享图片](https://image.cha138.com/20210729/be0c565b6f44419d9ed505213a89262b.jpg)
- 键盘相关→KeyboardUtils.java
![技术分享图片](https://image.cha138.com/20210729/5c0798ecef2645a2b6b15ac9c8dbbf63.jpg)
- 定位相关→LocationUtils.java
![技术分享图片](https://image.cha138.com/20210729/f4ef8d4ce8bf4164baa51e60de1c8fbf.jpg)
- 日志相关→LogUtils.java
![技术分享图片](https://image.cha138.com/20210729/419355b82a2c420c99ed67ea9abd492f.jpg)
- 网络相关→NetworkUtils.java
![技术分享图片](https://image.cha138.com/20210729/9037fcc156c94306b6f49e28cd92dee5.jpg)
- 手机相关→PhoneUtils.java
![技术分享图片](https://image.cha138.com/20210729/7224820ddece4e028f5b7f2eaf9c407f.jpg)
- 拼音相关→PinyinUtils.java
![技术分享图片](https://image.cha138.com/20210729/f8ca68301fbd46279dc712a322e2faaf.jpg)
- 进程相关→ProcessUtils.java
![技术分享图片](https://image.cha138.com/20210729/13824db4458b41d3ac0fda1bed45d54d.jpg)
- 正则相关→RegexUtils.java
![技术分享图片](https://image.cha138.com/20210729/2e48ba9937c94418ab9ab3d9ee37c5ed.jpg)
- 屏幕相关→ScreenUtils.java
![技术分享图片](https://image.cha138.com/20210729/7f5c3c6ea92b410ca12da605200f0cac.jpg)
- SD卡相关→SDCardUtils.java
![技术分享图片](https://image.cha138.com/20210729/682acc0b2c494b3a953d615d35021e41.jpg)
- 服务相关→ServiceUtils.java
![技术分享图片](https://image.cha138.com/20210729/bc347f075a974b199afd7d24e4ab6a8c.jpg)
- Shell相关→ShellUtils.java
![技术分享图片](https://image.cha138.com/20210729/73793cb885ed4712b870dac21b179a3a.jpg)
- 尺寸相关→SizeUtils.java
![技术分享图片](https://image.cha138.com/20210729/fcd039c1d6274974a6f86a1706476d94.jpg)
![技术分享图片](https://image.cha138.com/20210729/95726bc28fed44a692e93931c8382f4a.jpg)
![技术分享图片](https://image.cha138.com/20210729/5e66709fb4b64541bf760194aeeb45cd.jpg)
- SpannableString相关工具类→SpannableStringUtils.java
![技术分享图片](https://image.cha138.com/20210729/2b0105dda6d242689826b4a5f0341e74.jpg)
- SP相关→SPUtils.java
![技术分享图片](https://image.cha138.com/20210729/71e9f17bfea840709f62bf0120b49b75.jpg)
- 字符串相关→StringUtils.java
![技术分享图片](https://image.cha138.com/20210729/14261b08f7424f7f832c111d122f157d.jpg)
- 线程池相关→ThreadPoolUtils.java
![技术分享图片](https://image.cha138.com/20210729/1ca0315b8bb04057a60bccc3b690e3a3.jpg)
- 时间相关→TimeUtils.java
![技术分享图片](https://image.cha138.com/20210729/ee4ee27726a84601885b8aabe34581b9.jpg)
- 吐司相关→ToastUtils.java
![技术分享图片](https://image.cha138.com/20210729/51abf2f66e3b4ec9a06fdaa15c21dcd1.jpg)
- 压缩相关→ZipUtils.java→Test
![技术分享图片](https://image.cha138.com/20210729/df1e4af70ef1443488b18764b5facd0a.jpg)
1.判断手机格式(正则表达式)
![技术分享图片](https://image.cha138.com/20210729/bd780ede030a4b0d9db9fa74e6748c70.jpg)
2.dp-px;px-dp
![技术分享图片](https://image.cha138.com/20210729/2a17371eeffb4e7ca871bab62034b49c.jpg)
- 网络判断 2G - 3G - 4G -wifi
/**
* Created by ziyang on 16/12/14.
* Version 1.0
*/
public class NetWorkHelper {
/**
* 没有网络
*/
public static final int NETWORKTYPE_INVALID = 0;
/**
* wap网络
*/
public static final int NETWORKTYPE_WAP = 1;
/**
* 2G网络
*/
public static final int NETWORKTYPE_2G = 2;
/**
* 3G和3G以上网络,或统称为快速网络
*/
public static final int NETWORKTYPE_3G = 3;
/**
* wifi网络
*/
public static final int NETWORKTYPE_WIFI = 4;
private static boolean isFastMobileNetwork(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
switch (telephonyManager.getNetworkType()) {
case TelephonyManager.NETWORK_TYPE_1xRTT:
return false; // ~ 50-100 kbps
case TelephonyManager.NETWORK_TYPE_CDMA:
return false; // ~ 14-64 kbps
case TelephonyManager.NETWORK_TYPE_EDGE:
return false; // ~ 50-100 kbps
case TelephonyManager.NETWORK_TYPE_EVDO_0:
return true; // ~ 400-1000 kbps
case TelephonyManager.NETWORK_TYPE_EVDO_A:
return true; // ~ 600-1400 kbps
case TelephonyManager.NETWORK_TYPE_GPRS:
return false; // ~ 100 kbps
case TelephonyManager.NETWORK_TYPE_HSDPA:
return true; // ~ 2-14 Mbps
case TelephonyManager.NETWORK_TYPE_HSPA:
return true; // ~ 700-1700 kbps
case TelephonyManager.NETWORK_TYPE_HSUPA:
return true; // ~ 1-23 Mbps
case TelephonyManager.NETWORK_TYPE_UMTS:
return true; // ~ 400-7000 kbps
case TelephonyManager.NETWORK_TYPE_EHRPD:
return true; // ~ 1-2 Mbps
case TelephonyManager.NETWORK_TYPE_EVDO_B:
return true; // ~ 5 Mbps
case TelephonyManager.NETWORK_TYPE_HSPAP:
return true; // ~ 10-20 Mbps
case TelephonyManager.NETWORK_TYPE_IDEN:
return false; // ~25 kbps
case TelephonyManager.NETWORK_TYPE_LTE:
return true; // ~ 10+ Mbps
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
return false;
default:
return false;
}
}
/**
* 获取网络状态,wifi,wap,2g,3g.
*
* @param context 上下文
* @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G},
* *{@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}*
* <p>{@link #NETWORKTYPE_WIFI}
*/
public static int getNetWorkType(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String type = networkInfo.getTypeName();
if (type.equalsIgnoreCase("WIFI")) {
return NETWORKTYPE_WIFI;
} else if (type.equalsIgnoreCase("MOBILE")) {
String proxyHost = android.net.Proxy.getDefaultHost();
return TextUtils.isEmpty(proxyHost)
? (isFastMobileNetwork(context) ? NETWORKTYPE_3G : NETWORKTYPE_2G)
: NETWORKTYPE_WAP;
}
} else {
return NETWORKTYPE_INVALID;
}
return NETWORKTYPE_INVALID;
}
public static boolean isNetWorkConn(Context context) {
return getNetWorkType(context) != 0;
}
}
4.LogUtils.java debug,release no log,当然可以添加更详细的比如添加时间,msg等等
/**
* LogUtils log工具类
* @author ziyang
*/
public class LogUtils {
public static boolean isDebug = BuildConfig.LOG_DEBUG;
// 下面是传入自定义tag的函数
public static void i(String tag, String msg)
{
if (isDebug)
Log.i(tag, msg);
}
public static void d(String tag, String msg)
{
if (isDebug)
Log.i(tag, msg);
}
public static void e(String tag, String msg)
{
if (isDebug)
Log.i(tag, msg);
}
public static void v(String tag, String msg)
{
if (isDebug)
Log.i(tag, msg);
}
}
//在app build.gradle配置
buildTypes {
debug {
buildConfigField "boolean", "LOG_DEBUG", "true"
minifyEnabled false
zipAlignEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
//signingConfig signingConfigs.debug
}
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
minifyEnabled false
zipAlignEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
}
}
5.MyToast.java当然可以拓展,时间控制,content内容控制等等
![技术分享图片](https://image.cha138.com/20210729/42f78b6ca0374815953fe7406c49cd1b.jpg)
【转自】https://www.jianshu.com/p/ebae69928ce6
以上是关于android:Android开发不得不收藏的Utils的主要内容,如果未能解决你的问题,请参考以下文章