Android SDK原生 API中,有一些常用的工具类,运用得当可以省事省力省时,何况还是Android官方提供的,现在收集整理一些出来。也许这里面就有你想要的,不用自行写工具类实现了
[toc]
PackageManager.checkSignatures () 检查包签名。
FragmentManager.enableDebugLogging () 开启Fragment的debug日志记录。**
onTrimMemory 内存紧张时候Android系统回调此方法,可以在里面进行内存回收。
TimingLogger,SDK自带打印时间戳工具。可以分析某个方法执行的时间。用以性能分析。
官方文档说明使用方法(翻译):
一个实用程序类,帮助日志计时在方法调用中进行拆分。典型的用法是:
TimingLogger timings = new TimingLogger(TAG, "methodA");
// ... do some work A ...
timings.addSplit("work A");
// ... do some work B ...
timings.addSplit("work B");
// ... do some work C ...
timings.addSplit("work C");
timings.dumpToLog(); //输出到日志
The dumpToLog call would add the following to the log:
D/TAG ( 3459): methodA: begin
D/TAG ( 3459): methodA: 9 ms, work A
D/TAG ( 3459): methodA: 1 ms, work B
D/TAG ( 3459): methodA: 6 ms, work C
D/TAG ( 3459): methodA: end, 16 ms
但是,使用的时候会发现,有可能打印不出log,没关系,在命令行输入这条命令:
adb shell setprop log.tag.TAG VERBOSE //注意这里的tag.后面跟的TAG需要和设置的一样
//这条命令的意思是,把TAG为timing的这条log级别设置为VERBOSE,在v以上的Log都能打印出来。
Application.registerActivityLifecycleCallbacks 注册activity的生命周期方法回调。
可以用做全局Activity关闭管理,
获取栈顶Acitivity弹出提示框………………
DateUtils.formatDateTime() 格式化时间日期格式。
DateFormat.format("yyyy-MM-dd HH:mm:ss", System.currentTimeMillis());
DateFormat.format("yy/MM/dd", Calendar.getInstance());
DateFormat.format("yyyy", new Date(2016,11,17));
Formatter.formatFileSize() 处理文件大小格式化工具。把文件大小转换为KB,MB,GB这样的字符串。
PhoneNumberUtils.formatNumber () 格式化电话号码。
Android本身提供的日期时间工具类,里面有很多实用的工具集合。
DateUtils.isToady() 判断传入的日期时间是否为当天。
DateUtils.getRelativeTimeSpanString 可以计算时间间隔比如“几天前”,“几个月前”,等等。
Context.getCacheDir() 获取系统默认的缓存路径。
ActivityManager.clearApplicationUserData() 清理用户产生的数据。恢复的干净的初始阶段。
Environment.getExternalStoragePublicDirectory() 外部存储器公共存储文件夹。
Linkify.addLinks() 为一个TextView添加链接。
TextUtils.isEmpty() 判空 同java中StringUtils.isEmpty()
UrlQuerySanitizer 对一个URL链接进行检查和数据提取、解析等。
AutoScrollHelper 在滚动View中长按边缘滚动工具类。
ViewStub初始化阶段不加载任何View,然而随后以加载开发者给定布局文件。在懒加载 模式的View初始化过程中适合占位。
ThumbnailUtils 处理缩略图,可以处理本地视频获取第一针图片
android:weightSum 控制根布局总的权重和。(不常用)线性布局权重子控件直接设置亦可
ValueAnimator.reverse() 取消正在执行的动画。
AlphabetIndexer 字母索引类。
SortedList 排序列表。
android:duplicateParentState="true" 子View跟随其Parent的状态,如按击等。比如某个按钮很小,想要扩大其点击区域,通常会再给其包裹一层布局,将点击事件写到Parent上,这时候如果希望被包裹按钮的点击效果对应的Selector继续生效,就这么做。
getParent().requestDisallowInterceptTouchEvent(true) 屏蔽父view对事件的拦截处理。
HandlerThread 用以实现常见的Thread+Handler模型实现的复合型类。
LocalBroadcastManager 本地广播。更安全的本地广播机制,类似于EventBus的简化版。
Messenger 对AIDL的简化操作。
android:animateLayoutChanges="true" 使布局中的某些子view的消失和增加具有动画平滑过渡效果。
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT) 设置SurfaceView透明。
ArgbEvaluator.evaluate(float fraction, Object startValue, ObjectendValue) 颜色渐变,常见于导航栏、标题栏的颜色。
FragmentManager.enableDebugLogging () 开启Fragment的debug日志记录。**
Fragment的setUserVisibleHint 在这个方法里面可以实现Fragment的懒加载,比如:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser) {
//加载
} else {
//不加载
}
}
这在ViewPager结合Fragment的代码中实现懒加载很有用。因为Android官方默认当创建第一个Fragment时回创建第二个Fragment以确保用户平滑滑动,第二个View已经被创建,这在某些时候会带来一定的加载开销。