当前位置: 首页 > 科技观察

Android常用工具源码百科

时间:2023-03-12 12:10:19 科技观察

主要介绍和总结了Android开发中常用的工具,其中大部分也适用于Java。目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageUtils、ListUtils、MapUtils、ObjectUtils、SerializeUtils、SystemUtils、TimeUtils。本文英文版见:AndroidCommonUtils所有代码均在TrineaAndroidCommon@Github,欢迎Star或Fork^_*,本项目除了这些工具外,还包括缓存、下拉ListView等,详细界面介绍,请参阅TrineaAndroid通用API指南。具体使用:你可以直接导入TrineaAndroidCommon作为你项目的库(如何拉取代码和添加公共库),也可以自己提取一部分。1、HttpUtilsHttp网络工具类,主要包括httpGet、httpPost和http参数相关方法,以httpGet为例:以上三种方法,默认使用gzip压缩,使用bufferedReader提高读取速度。HttpRequest可以设置url、timeout、userAgent等http参数。HttpResponse可以获取返回内容,http响应码,http过期时间(Cache-Control的max-age和expires)等,前两种方法可以设置高级参数,丰富。内容被返回。第三种方法可以简单的传入url来获取返回的内容,类似于httpPost。更详细的设置可以直接使用HttpURLConnection或者Apache的HttpClient。源码见HttpUtils.java,更多方法和更详细的参数介绍见HttpUtilsApiGuide。2.DownloadManagerProAndroid系统下载管理DownloadManager增强方法可以获取下载相关信息,如:getStatusById(long)获取下载状态getDownloadBytes(long)获取下载进度信息getBytesAndStatus(long)获取下载进度信息和状态getFileName(long)获取下载文件路径getUri(long)获取下载urigetReason(long)获取下载失败或暂停原因getPausedReason(long)获取下载暂停原因getErrorCode(long)获取下载错误码源代码可以在下载管理器专业版。DownloadManagerProAPI指南。AndroidDownManager的使用参见DownManagerDemo。3、ShellUtilsAndroidShell工具类,可用于查看系统的root权限,在shell或root用户下执行shell命令。例如:checkRootPermission()检查root权限execCommand(String[]commands,booleanisRoot,booleanisNeedResultMsg)在shell环境下执行命令,第二个参数表示是否root权限执行execCommand(Stringcommand,booleanisRoot)的shell环境执行命令源码见ShellUtils.java,更多方法和更详细的参数介绍见ShellUtilsApiGuide。对于静默安装,请参阅静默安装的apk-root权限。4.PackageUtilsAndroid包相关工具,可以用来(root)安装应用,(root)卸载应用,判断是否是系统应用等,如:install(Context,String)安装一个应用,如果是系统应用或者已经root了,会静默安装,否则一般是installuninstall(Context,String)卸载应用,如果是系统应用或者已经root,则静默卸载,否则一般uninstallisSystemApplication(Context,String)判断应用是否为系统应用源码见PackageUtils.java,更多方法和更详细的参数介绍见ShellUtilsApiGuide。对于静默安装,请参阅静默安装的apk-root权限。5、PreferencesUtilsAndroidSharedPreferences相关的工具类可以方便的将相关类型的数据读写到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、JSONUtilsJSONUtils工具类可以方便的将相关类型的数据读写到Json中,如:StringgetString(JSONObjectjsonObject,Stringkey,StringdefaultValue)获取字符串类型valueStringgetString(StringjsonData,Stringkey,StringdefaultValue))获取string类型值表示从json中读取一个String类型key的值getMap(JSONObjectjsonObject,Stringkey)获取mapgetMap(StringjsonData,Stringkey)获取map表示读取某个Map类型的值keyfromjson源码见JSONUtils.java,更多方法和更详细的参数介绍见JSONUtilsApiGuide。7、FileUtils文件工具类,可用于读写文件和操作文件。如:readFile(StringfilePath)读文件writeFile(StringfilePath,Stringcontent,booleanappend)写文件getFileSize(Stringpath)获取文件大小deleteFile(Stringpath)删除文件源码可以在FileUtils.java中找到,更多方法以及更详细的参数介绍,参见FileUtilsApiGuide。8、ResourceUtilsAndroid资源工具类,可用于从android资源目录的raw和assets目录中读取内容,如:geFileFromAssets(Contextcontext,StringfileName)获取assets目录下的一个文件的内容geFileFromRaw(Contextcontext,intresId)获取raw目录下某个文件的源码可以在ResourceUtils.java中找到,更多方法和更详细的参数介绍可以在ResourceUtilsApiGuide中找到。9、StringUtilsString工具类可用于常见的字符串操作,如:isEmpty(Stringstr)判断字符串是否为空或长度为0isBlank(Stringstr)判断字符串是否为空或长度为0或由空格组成utf8Encode(Stringstr)以utf-8格式编码capitalizeFirstLetter(Stringstr)。首字母大写源码见StringUtils.java。更多方法和更详细的参数介绍参见StringUtilsApiGuide。10.ParcelUtilsAndroidParcel工具类,可用于从parcel中读取或写入特殊类型的数据,如:readBoolean(Parcelin)从pacel读取boolean类型数据readHashMap(Parcelin,ClassLoaderloader)读取地图typefromthepacelDatawriteBoolean(booleanb,Parcelout)向parcel写入boolean类型的数据writeHashMap(Mapmap,Parcelout,intflags)向parcel写入map类型的数据源码可以看ParcelUtils.java,更多的方法和更详细的参数介绍可以参考ParcelUtilsApiGuide。11、RandomUtils随机数工具类,可用于获取固定大小固定字符中的随机数,如:getRandom(char[]sourceChar,intlength)生成随机字符串,所有字符都在某个字符串中getRandomNumbers(intlength)生成随机数的源码见RandomUtils.java,更多方法和更详细的参数介绍见RandomUtilsApiGuide。12、ArrayUtils数组工具类可用于常见的数组操作,如:isEmpty(V[]sourceArray)判断数组是否为空或长度为0getLast(V[]sourceArray,Vvalue,VdefaultValue,booleanisCircle)获取数组中的某个值isCircle表示是否循环源码可见ArrayUtils.java,更多方法和更详细的参数介绍参见ArrayUtilsApiGuide。13、ImageUtils图像工具类,可用于Bitmap、字节数组、Drawable之间的转换和图像缩放。目前功能较弱,后期会加强。如:bitmapToDrawable(Bitmapb)bimap转换为drawabledrawableToBitmap(Drawabled)drawable转换为bitmapdrawableToByte(Drawabled)drawable转换为bytescaleImage(Bitmaporg,floatscaleWidth,floatscaleHeight)缩放图片源码可以找在ImageUtils.java中,更多的方法和更多详细的参数介绍,参见ImageUtilsApiGuide。14、ListUtilsList工具类可用于常用的List操作,如:isEmpty(ListsourceList)判断List是否为空或长度为0join(Listlist,Stringseparator)Listis转换为字符串,并固定分隔符splitaddDistinctEntry(ListsourceList,Ventry)添加不重复的元素到列表中。有关源代码,请参见ListUtils.java。更多方法和更详细的参数介绍参见ListUtilsApiGuide。15.MapUtilsMap工具类,可用于常用的Map操作,如:isEmpty(MapsourceMap)判断map是否为空或长度为0parseKeyAndValueToMap(Stringsource,StringkeyAndValueSeparator,StringkeyAndValuePairSeparator,booleanignoreSpace)string解析为maptoJson(Mapmap)map转json格式源码参见MapUtils.java,更多方法和更详细的参数介绍参见MapUtilsApiGuide。16.ObjectUtilsObject工具类,可用于Object的常用操作,如:isEquals(Objectactual,Objectexpected)比较两个对象是否相等compare(Vv1,Vv2)比较两个对象的大小transformIntArray(int[]source)Integerarray转int数组的源码可以在ObjectUtils.java中找到,更多的方法和更详细的参数介绍可以在ObjectUtilsApiGuide中找到。17、SerializeUtils序列化工具类,可用于将对象序列化到文件或从文件中反序列化对象,如:deserialization(StringfilePath)deserializeobjectsfromfilesserialization(StringfilePath,Objectobj)serializeobjectstofile源码见SerializeUtils.java,更多方法和更详细的参数介绍见SerializeUtilsApiGuide。18、SystemUtils系统信息工具类可以用来获取合适的线程池大小。目前功能较弱,后期会加强。例如:getDefaultThreadPoolSize()获取与系统配置匹配的线程池大小。源代码可以在SystemUtils.java中找到。更多方法和更详细的参数介绍参见SystemUtilsApiGuide。19、TimeUtils时间工具类,可用于与时间相关的操作,如:getCurrentTimeInLong()获取当前时间getTime(longtimeInMillis,SimpleDateFormatdateFormat)将long转换为固定格式的时间字符串源码可见TimeUtils.java,更多方法更多细节参数介绍参见TimeUtilsApiGuide。