概述
目录
- 写在前面
- 一、工具类模板
- 模板
- 使用方式
- 二、工具类的方法
- 获取顶部状态栏高度
- 将dp值转为px值
- 将毫秒值转为易于阅读的形式
- 将字节(B)数转为KB、MB和GB
- 判断wifi是否连接
- 判断是否有网络
- 将Date类型的值转为易于阅读的形式
- 将字符串类型的时间转换为Date类型
写在前面
欢迎阅读我的另一篇文章
如果你有问题欢迎咨询我,作者联系方式QQ/WX相同:860326470
一、工具类模板
这里是单例写法,推荐使用单例,如果不使用单例,那么需要在方法前加上static关键字,例如public static int 方法名(){}。下面的模板没有任何方法,需要添加需要的方法才能使用。
模板
我的工具类起的名字是MyUtils,你可以换成你自己喜欢的名字。
public class MyUtils {
private static MyUtils instance;
public static MyUtils getInstance() {
if (instance == null) {
instance = new MyUtils();
}
return instance;
}
}
使用方式
MyUtils.getInstance().方法名()
二、工具类的方法
复制之后直接粘贴进模板即可
获取顶部状态栏高度
public int getStatusBarHeight(Context context) {
int statusBarHeight = -1;
//获取status_bar_height资源的ID
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
//根据资源ID获取响应的尺寸值
statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
}
return statusBarHeight;
}
将dp值转为px值
因为类似于layoutparams.height需要传入px值,但我们一般都习惯使用dp值
public int dp2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
将毫秒值转为易于阅读的形式
例如:“3时15分1秒”,传入超过24*60*60的值(也就是一天)则返回null,常用作考试倒计时,你可类比该方法,更改为带天、甚至年的形式
public String formatTime(int time) {
if (time / 60 == 0) {
return "0时0分" + time + "秒";
} else if (time / (60 * 60) == 0) {
return "0时" + time / 60 + "分" + time % 60 + "秒";
} else if (time / (24 * 60 * 60) == 0) {
return time / (60 * 60) + "时" + time % 3600 / 60 + "分" + time % 60 + "秒";
} else {
return null;
}
}
将字节(B)数转为KB、MB和GB
例如:传入1024,返回"1KB"
public String formatFileSize(long size) {
DecimalFormat df = new DecimalFormat("#.00");
String fileSizeString;
if (size < 1024) {
fileSizeString = size + "B";
} else if (size < 1048576) {
fileSizeString = size / 1024 + "KB";
} else if (size < 1073741824) {
fileSizeString = df.format((double) size / 1048576) + "MB";
} else if (size < 1073741824 * 1024L) {
fileSizeString = df.format((double) size / 1073741824) + "GB";
} else {
fileSizeString = "文件过大";
}
return fileSizeString;
}
判断wifi是否连接
使用前需要在AndroidManifest.xml文件中添加网络访问权限(和<application>标签同级的地方)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
public boolean isWifiConnected(Context context) {
if (context != null) {
//获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取NetworkInfo对象
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
//判断NetworkInfo对象是否为空 并且类型是否为MOBILE
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return networkInfo.isAvailable();
}
}
return false;
}
判断是否有网络
同上,使用前需要添加网络访问权限
public boolean isNetworkConnected(Context context) {
if (context != null) {
// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// 获取NetworkInfo对象
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
//判断NetworkInfo对象是否为空
if (networkInfo != null)
return networkInfo.isAvailable();
}
return false;
}
将Date类型的值转为易于阅读的形式
例如:返回"2020年01月01日 12时00分00秒"
@SuppressLint("SimpleDateFormat")
public String formatDate(Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
return simpleDateFormat.format(date);
}
将字符串类型的时间转换为Date类型
其中的@SneakyThrows注解是为了简化try/catch代码块和throws的。使用该注解之前需要在maven或gradle中导入Lombok包并且在Android Studio或Intellij IDEA中,左上角的File-Settings-Plugins安装Lombok插件
@SneakyThrows
@SuppressLint("SimpleDateFormat")
public Date parseDate(String dateString) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
TimeZone timeZone = TimeZone.getTimeZone("UTC");
simpleDateFormat.setTimeZone(timeZone);
return simpleDateFormat.parse(dateString);
}
最后
以上就是机灵御姐为你收集整理的Android工具类 - 常用方法(更新中……)写在前面一、工具类模板二、工具类的方法的全部内容,希望文章能够帮你解决Android工具类 - 常用方法(更新中……)写在前面一、工具类模板二、工具类的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复