技术程序员Android 工具类

Android 常用工具类

2017-09-21  本文已影响524人  程序员徐公

Android 常用工具类

Github 地址
CSDN 博客地址

前言

在 Android 开发中,我们经常需要用到各种工具类,比如 SPUills,ListUtils,TimeUtils,StringUtils,ToastUtisl ,FragmentUtils 等等。今天,这篇博客主要介绍我平时在开发中常用到的工具类,希望能给大家带来一点点帮助,后续会不断更新,欢迎大家加入一起维护。

完全退出

写在基类 BaseActivity,然后每个Activity都去继承

public class BaseActivity extends AppCompatActivity {
    public ActivityManagerUtil activityManagerUtil;
    public Activity mActivity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId() );
        mActivity = this;
        activityManagerUtil = ActivityManagerUtil.getInstance();
        activityManagerUtil.pushOneActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //结束Activity&从栈中移除该Activity
        activityManagerUtil.popOneActivity(this);
    }
    
    protected abstract int getLayoutId();

}

需要完全退出

activityManagerUtil.appExit();

全局异常捕获

只要在Application 初始化即可

public class AndroidUtilsApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //崩溃处理
        CrashHandlerUtil crashHandlerUtil = CrashHandlerUtil.getInstance();
        crashHandlerUtil.init(this);
        crashHandlerUtil.setCrashTip("很抱歉,程序出现异常,即将退出!");
    }
}

FragmentUtils

让 Fragment 处理 Back 事件,“高内聚,低耦合”,一直是我们追求的目标,而这完美地体现了这一点


Utils

在 Application 初始化的时候调用

获取 Application 对象

该工具类的主要作用是为我们提供一个 Application 对象,而 Application 是 Context 的实现类。这样,我们在写很多工具类的时候,就不需要传入 Context 对象了。比如 ToastUtils,SPUtils 等,方便用快捷


SPUtils

在该工具里面,它依赖于 Utils getApp() 方法,因此,我们在调用相应方法的时候不需要每次都传入 Context 。方便又快捷


ToastUtils

showLongSafe 方法与 showLong 方法的区别在于 showLongSafe 是安全地,它可以直接在子线程中调用


IntentUtils

用来产生打开各种类型文件的 Intent,包括 图片,音频文件,视频文件,APK,ppt,xls,doc,chm,txt 等文件


DensityUtil

主要用来处理 dp 与 px 的互转,sp 与 px 的互转等。


AppUtil

获取app版本名

获取app版本号


获取网络状态

NetStateUtils

判断是否是 3G 网络

判断是否是 wifi 网络

判断是否是 2G 网络

判断 WiFi 是否打开

判断是否有网络连接

判断当前是否是移动网络,并且网络是否可用

获取当前的网络状态:(该方法是自定义的) :没有网络-0:WIFI网络1:4G网络-4:3G网络-3:2G网络-2

获取本地的 IP 地址

判断 GPS 是否开启

更多方法,请参考该类,这里不一一说明了。

监听网络变化

android 监听网络状态的变化及实际应用

监听网络变化的,主要有三个广播

<action android:name="android.NET.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.Net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />

需要注意的 android.NET.conn.CONNECTIVITY_CHANGE 这个广播,从 Android 7.0 开始,如果是静态注册的,将无法收到广播。

更多行为变更请查看官网地址


KeyBoardUtil

获取实例对象

显示输入法

隐藏输入法


StringUtils

判断是否是空字符串

获取字符串的值,如果是 null,返回 defStr。当然你也可以调用 getStr(String str) 方法,为 null 的话,返回 ""。

好处:如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。

获取字符串的长度。平时我们如果调用 String.length ,如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。

该方法是将字符串的首字母变为大小写

    /**
     * capitalize first letter
     *
     * <pre>
     * capitalizeFirstLetter(null)     =   null;
     * capitalizeFirstLetter("")       =   "";
     * capitalizeFirstLetter("2ab")    =   "2ab"
     * capitalizeFirstLetter("a")      =   "A"
     * capitalizeFirstLetter("ab")     =   "Ab"
     * capitalizeFirstLetter("Abc")    =   "Abc"
     * </pre>
     *
     * @param str
     * @return
     */

ListUtils

在 Android 开发中,对 List 的操作也是非常常见的。

获取 List 的数量。该方法相比传统的方法,不需要每一次都去判空。

if(sourceList==null){
    return 0;
}else{
    sourceList.size();
}

// 或者 相当于以下代码
sourceList == null ? 0 : sourceList.size()

判断 List 是否为空

判断两个链表是否相等

if entry already exist in sourceList, return false, else add it and return true.

add all distinct entry to list1 from list2

remove duplicate entries in list


ArrayUtils

ArrayUtils 里面的方法与 ListUtils 基本是一一对应的,这里就不再一一阐述了


RexUtils

验证身份证号码

验证手机号码(支持国际格式,+86135xxxx...(中国内地),+00852137xxxx...(中国香港))

检验是否是电子邮箱。格式是数字,字母,下划线,但不含有 -。

验证是否是整数

验证整数和浮点数

检验是否是空白字符

检验是否是中文

验证日期(日期,格式:1992-09-03,或1992.09.03)

格式:http://blog.csdn.net/gdutxiaoxu/article/details/71732642http://www.csdn.net:80

匹配 IP 地址

手机号码,中间4位星号替换

银行卡号,保留最后4位,其他星号替换

关于更多正则表达式的,可以参考我的这一篇博客。 Android 常用正则表达式


DateUtils

获取当前的日期 ,格式为 yyyy-MM-dd

获取指定日期是星期几,参数为null时表示获取当前日期是星期日

根据毫秒数获取当前是星期几

获取当前时间和日期,yyyy-MM-dd HH:mm:ss。


FileUtils

ZipUtils


题外话

到目前为止,工具类的收集大概这么多,有一些本地还没同步的,后续会不断更新。

Github 地址
CSDN 博客地址

上一篇下一篇

猜你喜欢

热点阅读