Android工具类 - 常用方法(更新中……)

写在前面

欢迎阅读我的另一篇文章
如果你有问题欢迎咨询我,作者联系方式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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值