Skip to content

Commit ab69fc9

Browse files
committed
Give me ur Pull Request. ლ(╹◡╹ლ )
1 parent 3479795 commit ab69fc9

File tree

3 files changed

+661
-274
lines changed

3 files changed

+661
-274
lines changed

README-CH.md

Lines changed: 374 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,374 @@
1+
## Android开发人员不得不收集的代码([持续更新中][update_log.md])
2+
***
3+
为方便查找,已进行大致归类,其目录如下所示:
4+
> - **App相关→[AppUtils.java][app.java]**
5+
> - 安装App *installApp*
6+
> - 卸载指定包名的App *uninstallApp*
7+
> - 获取当前App信息 *getAppInfo*
8+
> - 获取所有已安装App信息 *getAllAppsInfo*
9+
> - 根据包名判断App是否安装 *isInstallApp*
10+
> - 打开指定包名的App *openAppByPackageName*
11+
> - 打开指定包名的App应用信息界面 *openAppInfo*
12+
> - 可用来做App信息分享 *shareAppInfo*
13+
> - 判断当前App处于前台还是后台 *isAppBackground*
14+
15+
> - **常量相关→[ConstUtils.java][const.java]**
16+
> - 存储相关常量
17+
> - 时间相关常量
18+
> - 正则相关常量
19+
20+
> - **转换相关→[ConvertUtils.java][convert.java][Test][convert.test]**
21+
> - byteArr与hexString互转 *bytes2HexString**hexString2Bytes*
22+
> - charArr与byteArr互转 *chars2Bytes**bytes2Chars*
23+
> - inputStream与outputStream互转 *input2OutputStream**output2InputStream*
24+
> - inputStream与byteArr互转 *inputStream2Bytes**bytes2InputStream*
25+
> - outputStream与byteArr互转 *outputStream2Bytes**bytes2OutputStream*
26+
> - inputStream与string按编码互转 *inputStream2String**string2InputStream*
27+
> - outputStream与string按编码互转 *outputStream2String**string2OutputStream*
28+
> - bitmap与byteArr互转 *bitmap2Bytes**bytes2Bitmap*
29+
> - drawable与bitmap互转 *drawable2Bitmap**bitmap2Drawable*
30+
> - drawable与byteArr互转 *drawable2Bytes**bytes2Drawable*
31+
> - dp与px互转 *dp2px**px2dp*
32+
> - sp与px互转 *sp2px**px2sp*
33+
34+
> - **设备相关→[DeviceUtils.java][device.java]**
35+
> - 获取设备MAC地址 *getMacAddress*
36+
> - 获取设备厂商,如Xiaomi *getManufacturer*
37+
> - 获取设备型号,如MI2SC *getModel*
38+
39+
> - **编码解码相关→[EncodeUtils.java][encode.java][Test][encode.test]**
40+
> - URL编码 *urlEncode*
41+
> - URL解码 *urlDecode*
42+
> - Base64编码 *base64Encode**base64Encode2String*
43+
> - Base64解码 *base64Decode*
44+
> - Base64URL安全编码 *base64UrlSafeEncode*
45+
> - Html编码 *htmlEncode*
46+
> - Html解码 *htmlDecode*
47+
48+
> - **加密解密相关→[EncryptUtils.java][encrypt.java][Test][encrypt.test]**
49+
> - MD2加密 *encryptMD2ToString**encryptMD2*
50+
> - MD5加密 *encryptMD5ToString**encryptMD5*
51+
> - SHA1加密 *encryptSHA1ToString**encryptSHA1*
52+
> - SHA224加密 *encryptSHA224ToString**encryptSHA224*
53+
> - SHA256加密 *encryptSHA256ToString**encryptSHA256*
54+
> - SHA384加密 *encryptSHA384ToString**encryptSHA384*
55+
> - SHA512加密 *encryptSHA512ToString**encryptSHA512*
56+
> - 获取文件的MD5校验码 *encryptMD5File2String**encryptMD5File*
57+
> - DES加密后转为Base64编码 *encryptDES2Base64*
58+
> - DES加密后转为16进制 *encryptDES2HexString*
59+
> - DES加密 *encryptDES*
60+
> - DES解密Base64编码密文 *decryptBase64DES*
61+
> - DES解密16进制密文 *decryptHexStringDES*
62+
> - DES解密 *decryptDES*
63+
> - 3DES加密后转为Base64编码 *encrypt3DES2Base64*
64+
> - 3DES加密后转为16进制 *encrypt3DES2HexString*
65+
> - 3DES加密 *encrypt3DES*
66+
> - 3DES解密Base64编码密文 *decryptBase64_3DES*
67+
> - 3DES解密16进制密文 *decryptHexString3DES*
68+
> - 3DES解密 *decrypt3DES*
69+
> - AES加密后转为Base64编码 *encryptAES2Base64*
70+
> - AES加密后转为16进制 *encryptAES2HexString*
71+
> - AES加密 *encryptAES*
72+
> - AES解密Base64编码密文 *decryptBase64AES*
73+
> - AES解密16进制密文 *decryptHexStringAES*
74+
> - AES解密 *decryptAES*
75+
76+
> - **文件相关→[FileUtils.java][file.java][Test][file.test]**
77+
> - 根据文件路径获取文件 *getFileByPath*
78+
> - 判断文件是否存在 *isFileExists*
79+
> - 判断是否是目录 *isDir*
80+
> - 判断是否是文件 *isFile*
81+
> - 判断目录是否存在,不存在则判断是否创建成功 *createOrExistsDir*
82+
> - 判断文件是否存在,不存在则判断是否创建成功 *createOrExistsFile*
83+
> - 判断文件是否存在,存在则在创建之前删除 *createFileByDeleteOldFile*
84+
> - 复制目录 *copyDir*
85+
> - 复制文件 *copyFile*
86+
> - 移动目录 *moveDir*
87+
> - 移动文件 *moveFile*
88+
> - 删除目录 *deleteDir*
89+
> - 删除文件 *deleteFile*
90+
> - 获取目录下所有文件 *listFilesInDir*
91+
> - 获取目录下所有文件包括子目录 *listFilesInDir*
92+
> - 获取目录下所有后缀名为suffix的文件 *listFilesInDirWithFilter*
93+
> - 获取目录下所有后缀名为suffix的文件包括子目录 *listFilesInDirWithFilter*
94+
> - 获取目录下所有符合filter的文件 *listFilesInDirWithFilter*
95+
> - 获取目录下所有符合filter的文件包括子目录 *listFilesInDirWithFilter*
96+
> - 获取目录下指定文件名的文件包括子目录 *searchFileInDir*
97+
> - 将输入流写入文件 *writeFileFromIS*
98+
> - 将字符串写入文件 *writeFileFromString*
99+
> - 简单获取文件编码格式 *getFileCharsetSimple*
100+
> - 获取文件行数 *getFileLines*
101+
> - 指定编码按行读取文件到List *readFile2List*
102+
> - 指定编码按行读取文件到StringBuilder中 *readFile2SB*
103+
> - 字节数转以unit为单位的size *byte2Size*
104+
> - 以unit为单位的size转字节数 *size2Byte*
105+
> - 获取文件大小 *getFileSize*
106+
> - 关闭IO *closeIO*
107+
> - 根据全路径获取最长目录 *getDirName*
108+
> - 根据全路径获取文件名 *getFileName*
109+
> - 根据全路径获取文件名不带拓展名 *getFileNameNoExtension*
110+
> - 根据全路径获取文件拓展名 *getFileExtension*
111+
112+
> - **图片相关→[ImageUtils.java][image.java]**
113+
> - bitmap与byteArr互转 *bitmap2Bytes**bytes2Bitmap*
114+
> - drawable与bitmap互转 *drawable2Bitmap**bitmap2Drawable*
115+
> - drawable与byteArr互转 *drawable2Bytes**bytes2Drawable*
116+
> - 获取bitmap *getBitmap*
117+
> - 缩放图片 *scale*
118+
> - 裁剪图片 *clip*
119+
> - 倾斜图片 *skew*
120+
> - 旋转图片 *rotate*
121+
> - 获取图片旋转角度 *getRotateDegree*
122+
> - 转为圆形图片 *toRound*
123+
> - 转为圆角图片 *toRoundCorner*
124+
> - 快速模糊 *fastBlur*
125+
> - renderScript模糊图片 *renderScriptBlur*
126+
> - stack模糊图片 *stackBlur*
127+
> - 添加颜色边框 *addFrame*
128+
> - 添加倒影 *addReflection*
129+
> - 添加文字水印 *addTextWatermark*
130+
> - 添加图片水印 *addImageWatermark*
131+
> - 转为alpha位图 *toAlpha*
132+
> - 转为灰度图片 *toGray*
133+
> - 保存图片 *save*
134+
> - 根据文件名判断文件是否为图片 *isImage*
135+
> - 获取图片类型 *getImageType*
136+
> - 按缩放压缩 *compressByScale*
137+
> - 按质量压缩 *compressByQuality*
138+
> - 按采样大小压缩 *compressBySampleSize*
139+
140+
> - **键盘相关→[KeyboardUtils.java][keyboard.java]**
141+
> - 避免输入法面板遮挡
142+
> - 动态隐藏软键盘 *hideSoftInput*
143+
> - 点击屏幕空白区域隐藏软键盘(注释萌萌哒) *clickBlankArea2HideSoftInput0*
144+
> - 动态显示软键盘 *showSoftInput*
145+
> - 切换键盘显示与否状态 *toggleSoftInput*
146+
147+
> - **网络相关→[NetworkUtils.java][network.java]**
148+
> - 打开网络设置界面 *openWirelessSettings*
149+
> - 判断网络是否可用 *isAvailable*
150+
> - 判断网络是否连接 *isConnected*
151+
> - 判断网络是否是4G *is4G*
152+
> - 判断wifi是否连接状态 *isWifiConnected*
153+
> - 获取移动网络运营商名称 *getNetworkOperatorName*
154+
> - 获取移动终端类型 *getPhoneType*
155+
> - 获取当前的网络类型(WIFI,2G,3G,4G) *getNetWorkType**getNetWorkTypeName*
156+
157+
> - **手机相关→[PhoneUtils.java][phone.java]**
158+
> - 判断设备是否是手机 *isPhone*
159+
> - 获取手机的IMIE *getPhoneIMEI*
160+
> - 获取手机状态信息 *getPhoneStatus*
161+
> - 跳至填充好phoneNumber的拨号界面 *dial*
162+
> - 拨打phoneNumber *call*
163+
> - 发送短信 *sendSms*
164+
> - 获取手机联系人 *getAllContactInfo*
165+
> - 打开手机联系人界面点击联系人后便获取该号码(注释萌萌哒) *getContantNum*
166+
> - 获取手机短信并保存到xml中 *getAllSMS*
167+
168+
> - **正则相关→[RegexUtils.java][regex.java][Test][regex.test]**
169+
> - 验证手机号(简单) *isMobileSimple*
170+
> - 验证手机号(精确) *isMobileExact*
171+
> - 验证电话号码 *isTel*
172+
> - 验证身份证号码15位 *isIDCard15*
173+
> - 验证身份证号码18位 *isIDCard18*
174+
> - 验证邮箱 *isEmail*
175+
> - 验证URL *isURL*
176+
> - 验证汉字 *isChz*
177+
> - 验证用户名 *isUsername*
178+
> - 验证yyyy-MM-dd格式的日期校验,已考虑平闰年 *isDate*
179+
> - 验证IP地址 *isIP*
180+
> - string是否匹配regex *isMatch*
181+
182+
> - **屏幕相关→[ScreenUtils.java][screen.java]**
183+
> - 获取手机分辨率 *getDeviceWidth**getDeviceHeight*
184+
> - 设置透明状态栏(api大于19方可使用) *setTransparentStatusBar*
185+
> - 隐藏状态栏(注释萌萌哒) *hideStatusBar*
186+
> - 获取状态栏高度 *getStatusBarHeight*
187+
> - 判断状态栏是否存在 *isStatusBarExists*
188+
> - 获取ActionBar高度 *getActionBarHeight*
189+
> - 显示通知栏 *showNotificationBar*
190+
> - 隐藏通知栏 *hideNotificationBar*
191+
> - 设置屏幕为横屏(注释萌萌哒) *setLandscape*
192+
> - 获取屏幕截图 *snapShotWithStatusBar**snapShotWithoutStatusBar*
193+
> - 判断是否锁屏 *isScreenLock*
194+
195+
> - **SD卡相关→[SDCardUtils.java][sdcard.java]**
196+
> - 判断SD卡是否可用 *isSDCardEnable*
197+
> - 获取SD卡路径 *getSDCardPath*
198+
> - 获取SD卡Data路径 *getDataPath*
199+
> - 计算SD卡的剩余空间 *getFreeSpace*
200+
201+
> - **Shell相关→[ShellUtils.java][shell.java]**
202+
> - 判断设备是否root *isRoot*
203+
> - 是否是在root下执行命令 *execCmd*
204+
205+
> - **尺寸相关→[SizeUtils.java][size.java]**
206+
> - dp与px转换 *dp2px**px2dp*
207+
> - sp与px转换 *sp2px**px2sp*
208+
> - 各种单位转换 *applyDimension*
209+
> - 在onCreate()即可强行获取View的尺寸 *forceGetViewSize*
210+
> - ListView中提前测量View尺寸(注释萌萌哒) *measureView*
211+
212+
> - **SP相关→[SPUtils.java][sp.java][Test][sp.test]**
213+
> - SPUtils构造函数 *SPUtils*
214+
> - SP中写入String类型value *putString*
215+
> - SP中读取String *getString*
216+
> - SP中写入int类型value *putInt*
217+
> - SP中读取int *getInt*
218+
> - SP中写入long类型value *putLong*
219+
> - SP中读取long *getLong*
220+
> - SP中写入float类型value *putFloat*
221+
> - SP中读取float *getFloat*
222+
> - SP中写入boolean类型value *putBoolean*
223+
> - SP中读取boolean *getBoolean*
224+
> - 获取SP中所有键值对 *getAll*
225+
> - 从SP中移除该key *remove*
226+
> - 判断SP中是否存在该key *contains*
227+
> - 清除SP中所有数据 *clear*
228+
229+
> - **字符串相关→[StringUtils.java][string.java][Test][string.test]**
230+
> - 判断字符串是否为null或长度为0 *isEmpty*
231+
> - 判断字符串是否为null或全为空格 *isSpace*
232+
> - null转为长度为0的字符串 *null2Length0*
233+
> - 返回字符串长度 *length*
234+
> - 首字母大写 *upperFirstLetter*
235+
> - 首字母小写 *lowerFirstLetter*
236+
> - 反转字符串 *reverse*
237+
> - 转化为半角字符 *toDBC*
238+
> - 转化为全角字符 *toSBC*
239+
240+
> - **线程池相关工具类→[ThreadPoolUtils.java][thread_pool.java]**
241+
> - ThreadPoolUtils构造函数 *ThreadPoolUtils*
242+
> - 在未来某个时间执行给定的命令 *execute*
243+
> - 在未来某个时间执行给定的命令链表 *execute*
244+
> - 待以前提交的任务执行完毕后关闭线程池 *shutDown*
245+
> - 试图停止所有正在执行的活动任务 *shutDownNow*
246+
> - 判断线程池是否已关闭 *isShutDown*
247+
> - 关闭线程池后判断所有任务是否都已完成 *isTerminated*
248+
> - 请求关闭、发生超时或者当前线程中断 *awaitTermination*
249+
> - 提交一个Callable任务用于执行 *submit*
250+
> - 提交一个Runnable任务用于执行 *submit*
251+
> - 执行给定的任务 *invokeAll**invokeAny*
252+
> - 延迟执行Runnable命令 *schedule*
253+
> - 延迟执行Callable命令 *schedule*
254+
> - 延迟并循环执行命令 *scheduleWithFixedRate**scheduleWithFixedDelay*
255+
256+
> - **时间相关→[TimeUtils.java][time.java][Test][time.test]**
257+
> - 将时间戳转为时间字符串 *milliseconds2String*
258+
> - 将时间字符串转为时间戳 *string2Milliseconds*
259+
> - 将时间字符串转为Date类型 *string2Date*
260+
> - 将Date类型转为时间字符串 *date2String*
261+
> - 将Date类型转为时间戳 *date2Milliseconds*
262+
> - 将时间戳转为Date类型 *milliseconds2Date*
263+
> - 毫秒时间戳单位转换(单位:unit) *milliseconds2Unit*
264+
> - 获取两个时间差(单位:unit) *getIntervalTime*
265+
> - 获取当前时间 *getCurTimeMills**getCurTimeString**getCurTimeDate*
266+
> - 获取与当前时间的差(单位:unit) *getIntervalByNow*
267+
> - 判断闰年 *isLeapYear*
268+
269+
> - **未归类→[UnclassifiedUtils.java][unclassified.java]**
270+
> - 获取服务是否开启 *isRunningService*
271+
272+
> - **压缩相关工具类→[ZipUtils.java][zip.java][Test][zip.test]**
273+
> - 批量压缩文件 *zipFiles*
274+
> - 压缩文件 *zipFile*
275+
> - 批量解压文件 *unzipFiles*
276+
> - 解压文件 *unzipFile*
277+
> - 解压带有关键字的文件 *unzipFileByKeyword*
278+
> - 获取压缩文件中的文件路径链表 *getFilePathInZip*
279+
> - 获取压缩文件中的注释链表 *getComments*
280+
> - 获取压缩文件中的文件对象 *getEntries*
281+
282+
> - **更新Log→[update_log.md][update_log.md]**
283+
284+
***
285+
286+
**做这份整理是想把它作为Android开发的小字典,当遇到一些琐碎问题时,不用再面向百度或者谷歌查询API的使用,费时费力,这里有的话,大家尽管撸走;同时也希望它能逐日壮大起来,期待大家的Star和完善,当然我也会一直更新发布版本和日志,为了方便大家导入,现已上传jcenter;其中很多代码也是汇四方之精华,谢谢前辈们的提供,当然最终还是要通过单元测试的,如有错误,请及时告之;开设QQ群提供讨论,群号:74721490,至于验证问题对大家来说肯定都是小case;**
287+
288+
### Download
289+
***
290+
Gradle:
291+
``` groovy
292+
compile 'com.blankj:utilcode:1.1.5'
293+
```
294+
295+
### Proguard
296+
***
297+
```
298+
-keep class com.blankj.utilcode.** { *; }
299+
-keep classmembers class com.blankj.utilcode.** { *; }
300+
-dontwarn com.blankj.utilcode.**
301+
```
302+
303+
### License
304+
***
305+
```
306+
Copyright 2016 Blankj
307+
308+
Licensed under the Apache License, Version 2.0 (the "License");
309+
you may not use this file except in compliance with the License.
310+
You may obtain a copy of the License at
311+
312+
http://www.apache.org/licenses/LICENSE-2.0
313+
314+
Unless required by applicable law or agreed to in writing, software
315+
distributed under the License is distributed on an "AS IS" BASIS,
316+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
317+
See the License for the specific language governing permissions and
318+
limitations under the License.
319+
```
320+
321+
[app.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/AppUtils.java
322+
323+
[const.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ConstUtils.java
324+
325+
[convert.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ConvertUtils.java
326+
[convert.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/ConvertUtilsTest.java
327+
328+
[device.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/DeviceUtils.java
329+
330+
[encode.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncodeUtils.java
331+
[encode.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/EncodeUtilsTest.java
332+
333+
[encrypt.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/EncryptUtils.java
334+
[encrypt.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/EncryptUtilsTest.java
335+
336+
[file.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/FileUtils.java
337+
[file.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/FileUtilsTest.java
338+
339+
[image.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ImageUtils.java
340+
341+
[keyboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/KeyboardUtils.java
342+
343+
[network.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/NetworkUtils.java
344+
345+
[phone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/PhoneUtils.java
346+
347+
[regular.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/RegexUtils.java
348+
[regular.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/RegexUtilsTest.java
349+
350+
[screen.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ScreenUtils.java
351+
352+
[sdcard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SDCardUtils.java
353+
354+
[shell.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ShellUtils.java
355+
356+
[size.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SizeUtils.java
357+
358+
[sp.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/SPUtils.java
359+
[sp.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/SPUtilsTest.java
360+
361+
[string.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/StringUtils.java
362+
[string.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/StringUtilsTest.java
363+
364+
[thread_pool.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ThreadPoolUtils.java
365+
366+
[time.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/TimeUtils.java
367+
[time.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/TimeUtilsTest.java
368+
369+
[unclassified.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/UnclassifiedUtils.java
370+
371+
[zip.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/utils/ZipUtils.java
372+
[zip.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/test/java/com/blankj/utilcode/utils/ZipUtilsTest.java
373+
374+
[update_log.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md

0 commit comments

Comments
 (0)