Android 常用工具类
来源:互联网 发布:淘宝产品详情页素材 编辑:程序博客网 时间:2024/06/05 18:09
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
- addFragment
- hideAddFragment
- removeFragment
- replaceFragment
- popFragment
- showFragment
- dispatchBackPress
让 Fragment 处理 Back 事件,“高内聚,低耦合”,一直是我们追求的目标,而这完美地体现了这一点
Utils
- void init(@NonNull final Application app)
在 Application 初始化的时候调用
- Application getApp()
获取 Application 对象
该工具类的主要作用是为我们提供一个 Application 对象,而 Application 是 Context 的实现类。这样,我们在写很多工具类的时候,就不需要传入 Context 对象了。比如 ToastUtils,SPUtils 等,方便用快捷
SPUtils
- get
- put
- getLong
- getInt
- getString
- getFloat
- getShort
- putInt
- putString
在该工具里面,它依赖于 Utils getApp() 方法,因此,我们在调用相应方法的时候不需要每次都传入 Context 。方便又快捷
ToastUtils
- showLongSafe
- showShortSafe
- showShort
- showLong
showLongSafe 方法与 showLong 方法的区别在于 showLongSafe 是安全地,它可以直接在子线程中调用
IntentUtils
- Intent openFile(String filePath)
用来产生打开各种类型文件的 Intent,包括 图片,音频文件,视频文件,APK,ppt,xls,doc,chm,txt 等文件
DensityUtil
- dip2px
- px2dip
- px2sp
- sp2px
主要用来处理 dp 与 px 的互转,sp 与 px 的互转等。
AppUtil
- String getAppVersionName(Context context)
获取app版本名
- int getAppVersionCode(Context context)
获取app版本号
获取网络状态
NetStateUtils
- boolean is3G(Context context)
判断是否是 3G 网络
- isWifi(Context context)
判断是否是 wifi 网络
- is2G(Context context)
判断是否是 2G 网络
- boolean isWifiEnabled(Context context)
判断 WiFi 是否打开
- isNetworkConnected(Context context)
判断是否有网络连接
- boolean isMobileConnected(Context context)
判断当前是否是移动网络,并且网络是否可用
- getAPNType(Context context)
获取当前的网络状态:(该方法是自定义的) :没有网络-0:WIFI网络1:4G网络-4:3G网络-3:2G网络-2
- String getHostIp()
获取本地的 IP 地址
- boolean isGPSEnabled(Context context)
判断 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
- KeyBoardUtil getInstance(Activity activity)
获取实例对象
- show()
显示输入法
- hide()
隐藏输入法
StringUtils
- isEmpty(CharSequence str)
判断是否是空字符串
- String getStr(String str,String defStr)
获取字符串的值,如果是 null,返回 defStr。当然你也可以调用 getStr(String str) 方法,为 null 的话,返回 “”。
好处:如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。
- length(CharSequence str)
获取字符串的长度。平时我们如果调用 String.length ,如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。
- String capitalizeFirstLetter(String str)
该方法是将字符串的首字母变为大小写
/** * 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 的操作也是非常常见的。
- getSize(List sourceList)
获取 List 的数量。该方法相比传统的方法,不需要每一次都去判空。
if(sourceList==null){ return 0;}else{ sourceList.size();}// 或者 相当于以下代码sourceList == null ? 0 : sourceList.size()
- isEmpty(List sourceList)
判断 List 是否为空
- boolean isEquals(List actual, List expected)
判断两个链表是否相等
- addDistinctEntry(List sourceList, V entry)
if entry already exist in sourceList, return false, else add it and return true.
- addDistinctList(List sourceList, List entryList)
add all distinct entry to list1 from list2
- distinctList(List sourceList)
remove duplicate entries in list
- getNext(List sourceList, V value)
ArrayUtils
ArrayUtils 里面的方法与 ListUtils 基本是一一对应的,这里就不再一一阐述了
RexUtils
- checkIdCard(String idCard)
验证身份证号码
- checkMobile(String mobile)
验证手机号码(支持国际格式,+86135xxxx…(中国内地),+00852137xxxx…(中国香港))
boolean checkPhone(String phone)
checkEmail
检验是否是电子邮箱。格式是数字,字母,下划线,但不含有 -。
- checkDigit
验证是否是整数
- checkDecimals
验证整数和浮点数
- checkBlankSpace
检验是否是空白字符
- checkChinese
检验是否是中文
- checkBirthday
验证日期(日期,格式:1992-09-03,或1992.09.03)
- 验证 URL 地址
格式:http://blog.csdn.net/gdutxiaoxu/article/details/71732642或 http://www.csdn.net:80
- checkIpAddress
匹配 IP 地址
- phoneNoHide
手机号码,中间4位星号替换
- cardIdHide
银行卡号,保留最后4位,其他星号替换
关于更多正则表达式的,可以参考我的这一篇博客。 Android 常用正则表达式
DateUtils
- String getCurrentDate()
获取当前的日期 ,格式为 yyyy-MM-dd
String getWeekOfDate(Date date)
获取指定日期是星期几,参数为null时表示获取当前日期是星期日
- String getWeekOfDate(long timeMiss)
根据毫秒数获取当前是星期几
- getCurrentDateAndTime
获取当前时间和日期,yyyy-MM-dd HH:mm:ss。
FileUtils
- File getFileByPath(final String filePath)
- isFileExists
- rename
- isDir
- isFile
- createOrExistsDir
- createOrExistsFile
- copyOrMoveDir
ZipUtils
boolean zipFiles(final Collection resFiles, final String zipFilePath)
throws IOExceptionboolean zipFiles(final Collection resFiles, final String zipFilePath, final String comment)
boolean unzipFiles(final Collection zipFiles, final String destDirPath)
throws IOException
-
题外话
到目前为止,工具类的收集大概这么多,有一些本地还没同步的,后续会不断更新。
Github 地址
CSDN 博客地址
- Android 常用工具类封装
- Android 常用工具类封装
- Android中常用工具类
- Android常用工具类2
- android常用工具类 andutils
- Android常用工具类
- Android常用工具类
- android常用工具类
- Android常用工具类
- Android 常用工具类
- Android常用工具类
- Android常用工具类
- Android常用工具类
- Android常用工具类
- Android常用工具类
- Android常用工具类Util
- Android常用工具类
- android 常用工具类
- [LeetCode]139. Word Break
- jsp出现The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- 结构型模式之适配器模式
- hrbust 1609 Windows安全警报
- 将java RDD结果写入Hive表中
- Android 常用工具类
- 模糊查询的存储过程
- listview
- MySQL5.6.25升级MySQL5.7.15
- list、set、map
- C语言实现单链表面试题---基础篇
- NodeMCU(ESP8266)开发笔记
- Xlistview加载更多
- RedisComponent