19个Android常用工具类汇总
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java。
目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageUtils、ListUtils、MapUtils、ObjectUtils、SerializeUtils、SystemUtils、TimeUtils。
TheEnglishversionofthisarticlesee:AndroidCommonUtils
所有代码都在TrineaAndroidCommon@Github中,欢迎Star或Fork^_*,除这些工具类外此项目还包括缓存、下拉ListView等。详细接口介绍可见TrineaAndroidCommonAPIGuide。
具体使用:可直接引入TrineaAndroidCommon作为你项目的library(如何拉取代码及添加公共库),或是自己抽取其中的部分使用。
1、HttpUtils
Http网络工具类,主要包括httpGet、httpPost以及http参数相关方法,以httpGet为例:
staticHttpResponsehttpGet(HttpRequestrequest)
staticHttpResponsehttpGet(java.lang.StringhttpUrl)
staticStringhttpGetString(StringhttpUrl)
包含以上三个方法,默认使用gzip压缩,使用bufferedReader提高读取速度。
HttpRequest中可以设置url、timeout、userAgent等其他http参数
HttpResponse中可以获取返回内容、http响应码、http过期时间(Cache-Control的max-age和expires)等
前两个方法可以进行高级参数设置及丰富内容返回,第三个方法可以简单的传入url获取返回内容,httpPost类似。更详细的设置可以直接使用HttpURLConnection或apache的HttpClient。
源码可见HttpUtils.java,更多方法及更详细参数介绍可见HttpUtilsApiGuide。
2、DownloadManagerPro
Android系统下载管理DownloadManager增强方法,可用于包括获取下载相关信息,如:
getStatusById(long)得到下载状态
getDownloadBytes(long)得到下载进度信息
getBytesAndStatus(long)得到下载进度信息和状态
getFileName(long)得到下载文件路径
getUri(long)得到下载uri
getReason(long)得到下载失败或暂停原因
getPausedReason(long)得到下载暂停原因
getErrorCode(long)得到下载错误码
源码可见DownloadManagerPro.java,更多方法及更详细参数介绍可见DownloadManagerProApiGuide。关于AndroidDownManager使用可见DownManagerDemo。
3、ShellUtils
AndroidShell工具类,可用于检查系统root权限,并在shell或root用户下执行shell命令。如:
checkRootPermission()检查root权限
execCommand(String[]commands,booleanisRoot,booleanisNeedResultMsg)shell环境执行命令,第二个参数表示是否root权限执行
execCommand(Stringcommand,booleanisRoot)shell环境执行命令
源码可见ShellUtils.java,更多方法及更详细参数介绍可见ShellUtilsApiGuide。关于静默安装可见apk-root权限静默安装。
4、PackageUtils
Android包相关工具类,可用于(root)安装应用、(root)卸载应用、判断是否系统应用等,如:
install(Context,String)安装应用,如果是系统应用或已经root,则静默安装,否则一般安装
uninstall(Context,String)卸载应用,如果是系统应用或已经root,则静默卸载,否则一般卸载
isSystemApplication(Context,String)判断应用是否为系统应用
源码可见PackageUtils.java,更多方法及更详细参数介绍可见ShellUtilsApiGuide。关于静默安装可见apk-root权限静默安装。
5、PreferencesUtils
AndroidSharedPreferences相关工具类,可用于方便的向SharedPreferences中读取和写入相关类型数据,如:
putString(Context,String,String)保存string类型数据
putInt(Context,String,int)保存int类型数据
getString(Context,String)获取string类型数据
getInt(Context,String)获取int类型数据
可通过修改PREFERENCE_NAME变量修改preferencename
源码可见PreferencesUtils.java,更多方法及更详细参数介绍可见PreferencesUtilsApiGuide。
6、JSONUtils
JSONUtils工具类,可用于方便的向Json中读取和写入相关类型数据,如:
StringgetString(JSONObjectjsonObject,Stringkey,StringdefaultValue)得到string类型value
StringgetString(StringjsonData,Stringkey,StringdefaultValue)得到string类型value
表示从json中读取某个String类型key的值
getMap(JSONObjectjsonObject,Stringkey)得到map
getMap(StringjsonData,Stringkey)得到map
表示从json中读取某个Map类型key的值
源码可见JSONUtils.java,更多方法及更详细参数介绍可见JSONUtilsApiGuide。
7、FileUtils
文件工具类,可用于读写文件及对文件进行操作。如:
readFile(StringfilePath)读文件
writeFile(StringfilePath,Stringcontent,booleanappend)写文件
getFileSize(Stringpath)得到文件大小
deleteFile(Stringpath)删除文件
源码可见FileUtils.java,更多方法及更详细参数介绍可见FileUtilsApiGuide。
8、ResourceUtils
AndroidResource工具类,可用于从android资源目录的raw和assets目录读取内容,如:
geFileFromAssets(Contextcontext,StringfileName)得到assets目录下某个文件内容
geFileFromRaw(Contextcontext,intresId)得到raw目录下某个文件内容
源码可见ResourceUtils.java,更多方法及更详细参数介绍可见ResourceUtilsApiGuide。
9、StringUtils
String工具类,可用于常见字符串操作,如:
isEmpty(Stringstr)判断字符串是否为空或长度为0
isBlank(Stringstr)判断字符串是否为空或长度为0或由空格组成
utf8Encode(Stringstr)以utf-8格式编码
capitalizeFirstLetter(Stringstr)首字母大写
源码可见StringUtils.java,更多方法及更详细参数介绍可见StringUtilsApiGuide。
10、ParcelUtils
AndroidParcel工具类,可用于从parcel读取或写入特殊类型数据,如:
readBoolean(Parcelin)从pacel中读取boolean类型数据
readHashMap(Parcelin,ClassLoaderloader)从pacel中读取map类型数据
writeBoolean(booleanb,Parcelout)向parcel中写入boolean类型数据
writeHashMap(Map<K,V>map,Parcelout,intflags)向parcel中写入map类型数据
源码可见ParcelUtils.java,更多方法及更详细参数介绍可见ParcelUtilsApiGuide。
11、RandomUtils
随机数工具类,可用于获取固定大小固定字符内的随机数,如:
getRandom(char[]sourceChar,intlength)生成随机字符串,所有字符均在某个字符串内
getRandomNumbers(intlength)生成随机数字
源码可见RandomUtils.java,更多方法及更详细参数介绍可见RandomUtilsApiGuide。
12、ArrayUtils
数组工具类,可用于数组常用操作,如:
isEmpty(V[]sourceArray)判断数组是否为空或长度为0
getLast(V[]sourceArray,Vvalue,VdefaultValue,booleanisCircle)得到数组中某个元素前一个元素,isCircle表示是否循环
getNext(V[]sourceArray,Vvalue,VdefaultValue,booleanisCircle)得到数组中某个元素下一个元素,isCircle表示是否循环
源码可见ArrayUtils.java,更多方法及更详细参数介绍可见ArrayUtilsApiGuide。
13、ImageUtils
图片工具类,可用于Bitmap,bytearray,Drawable之间进行转换以及图片缩放,目前功能薄弱,后面会进行增强。如:
bitmapToDrawable(Bitmapb)bimap转换为drawable
drawableToBitmap(Drawabled)drawable转换为bitmap
drawableToByte(Drawabled)drawable转换为byte
scaleImage(Bitmaporg,floatscaleWidth,floatscaleHeight)缩放图片
源码可见ImageUtils.java,更多方法及更详细参数介绍可见ImageUtilsApiGuide。
14、ListUtils
List工具类,可用于List常用操作,如:
isEmpty(List<V>sourceList)判断List是否为空或长度为0
join(List<String>list,Stringseparator)List转换为字符串,并以固定分隔符分割
addDistinctEntry(List<V>sourceList,Ventry)向list中添加不重复元素
源码可见ListUtils.java,更多方法及更详细参数介绍可见ListUtilsApiGuide。
15、MapUtils
Map工具类,可用于Map常用操作,如:
isEmpty(Map<K,V>sourceMap)判断map是否为空或长度为0
parseKeyAndValueToMap(Stringsource,StringkeyAndValueSeparator,StringkeyAndValuePairSeparator,booleanignoreSpace)字符串解析为map
toJson(Map<String,String>map)map转换为json格式
源码可见MapUtils.java,更多方法及更详细参数介绍可见MapUtilsApiGuide。
16、ObjectUtils
Object工具类,可用于Object常用操作,如:
isEquals(Objectactual,Objectexpected)比较两个对象是否相等
compare(Vv1,Vv2)比较两个对象大小
transformIntArray(int[]source) Integer数组转换为int数组
源码可见ObjectUtils.java,更多方法及更详细参数介绍可见ObjectUtilsApiGuide。
17、SerializeUtils
序列化工具类,可用于序列化对象到文件或从文件反序列化对象,如:
deserialization(StringfilePath)从文件反序列化对象
serialization(StringfilePath,Objectobj)序列化对象到文件
源码可见SerializeUtils.java,更多方法及更详细参数介绍可见SerializeUtilsApiGuide。
18、SystemUtils
系统信息工具类,可用于得到线程池合适的大小,目前功能薄弱,后面会进行增强。如:
getDefaultThreadPoolSize()得到跟系统配置相符的线程池大小
源码可见SystemUtils.java,更多方法及更详细参数介绍可见SystemUtilsApiGuide。
19、TimeUtils
时间工具类,可用于时间相关操作,如:
getCurrentTimeInLong()得到当前时间
getTime(longtimeInMillis,SimpleDateFormatdateFormat)将long转换为固定格式时间字符串
源码可见TimeUtils.java,更多方法及更详细参数介绍可见TimeUtilsApiGuide。