安卓原生工具类--android开发不要盲目写工具了(不定期更新)
2017-10-14 11:31
489 查看
前言
Android SDK原生 API中,有一些常用的工具类,运用得当可以省事省力省时,何况还是Android官方提供的,现在收集整理一些出来。也许这里面就有你想要的,不用自行写工具类实现了开发必备
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"); 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: end, 16 ms 但是,使用的时候会发现,有可能打印不出log,没关系,在命令行输入这条命令: adb shell setprop log.tag.TAG VERBOSE //注意这里的tag.后面跟的TAG需要和设置的一样 //这条命令的意思是,把TAG为timing的这条log级别设置为VERBOSE,在v以上的Log都能打印出来。
Application.registerActivityLifecycleCallbacks 注册activity的生命周期方法回调。 可以用做全局Activity关闭管理, 获取栈顶Acitivity弹出提示框………………
BuildConfig.DEBUG 判断当前App是否处于DEBUG模式
格式化相关
Formatter.formatFileSize() 处理文件大小格式化工具。把文件大小转换为KB,MB,GB这样的字符串。
PhoneNumberUtils.formatNumber () 格式化电话号码。 mMobileEt.addTextChangedListener(new PhoneNumberFormattingTextWatcher(Locale.CHINA.getCountry())); 手机号自动加空格
NumberFormat 类用来算处理人民币带符号问题,比如0.10元,10.00元等, NumberFormat.getInstance().format() 可以实现去结尾的零操作
DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;
时间/日期
Android本身提供的日期时间工具类,里面有很多实用的工具集合。DateUtils.isToady() 判断传入的日期时间是否为当天。
DateUtils.getRelativeTimeSpanString(long mills) 格式化为 “n(分钟/小时/天/月)前” 获取时间跨度字符串
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));
TimeUnit.SECONDS.toDays(long s) / TimeUnit.DAYS 等系列直接定义时间和转化
CountDownTimer 倒计时,通常用于获取验证码的时间显示
存贮(数据)相关
Context.getCacheDir() 获取系统默认的缓存路径。
ActivityManager.clearApplicationUserData() 清理用户产生的数据。恢复的干净的初始阶段。
Environment.getExternalStoragePublicDirectory() 外部存储器公共存储文件夹。
文字相关
Linkify.addLinks() 为一个TextView添加链接。 Html.fromHtml("……") 配合前者使用更佳
TextUtils.isEmpty() 判空 同java中StringUtils.isEmpty()
UrlQuerySanitizer 对一个URL链接进行检查和数据提取、解析等。
TextView.setError() 设置错误信息(一般在输入框中使用)
editText.setTransformationMethod() 里面可以使用转写大小写,控制密码显示隐藏……等操作
android:includeFontPadding="false",TextView取消行间距
SearchRecentSuggestionsProvider 可以创建最近提示效果的 provider,是一个简单快速的方法。
edittext.addTextChangedListener(new TextWatcher() {……} 输入内容监听
控件相关
AutoScrollHelper 在滚动View中长按边缘滚动工具类。
ViewStub初始化阶段不加载任何View,然而随后以加载开发者给定布局文件。在懒加载 模式的View初始化过程中适合占位。
ThumbnailUtils 处理缩略图,可以处理本地视频获取第一针图片
android:weightSum 控制根布局总的权重和。(不常用)线性布局权重子控件直接设置亦可
ValueAnimator.reverse() 取消正在执行的动画。
View.postDelay(runnable,mills) 用来延时执行,省掉许多定时器,轻便,简单
View.isShown() 类同view.getVisibility() == View.VISIBLE 但view父控件子控件全部可见 才为ture
<
4000
pre class="prettyprint">
android:fillViewport ="ture" 可以解决在 ScrollView 中当内容不足的时候填不满屏幕的问题
ImageSwitcher 幻灯片效果,不常用
Space 控件是Android 4.0中新增的一个控件,分隔不同的控件,形成空白的区域.轻量,跳过draw提升页面加载速度
自定义view
View.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 关闭硬件加速,解决自定义控件兼容问题
ViewFlipper,实现多个view的切换(循环),可自定义动画效果,且可针对单个切换指定动画。
GradientDrawable 用shape标签定义的xml,最终都是转化为GradientDrawable对象,静态使用(xml中使用shape标签定义)动态使用: new GradientDrawable();
ViewDragHelper 视图拖动助手,简化事件处理
if(null == toast.getView().getParent()){ toast.show(); }else{System.exit(0); } 利用系统toast实现双击退出应用功能
public boolean hasOverlappingRendering() { return flase; } 自定义 View 时重写此方法返回flase,禁用过度绘制,提高渲染性能。
ViewTreeObserver——这是一个很棒的工具。可以进入到 VIew 里面,并监控 View 结构的各种状态,通常用来做 View 的测量操作(自定义视图中经常用到)。
GestureDetector 用来监听和相应对应的手势事件,比如点击,长按,慢滑动,快滑动,用起来很简单,比你自己实现要方便许多
判断
URLUtil.isNetworkUrl(String url) 一系列的判断URl的方法,此处判断是否网络连接
排序
AlphabetIndexer 字母索引类。SortedList 排序列表。
Collections.sort(list, Collator.getInstance(Locale.SIMPLIFIED_CHINESE)); 拼音排序
事务相关(触摸,点击事件分发……)
android:duplicateParentState="true" 子View跟随其Parent的状态,如按击等。比如某个按钮很小,想要扩大其点击区域,通常会再给其包裹一层布局,将点击事件写到Parent上,这时候如果希望被包裹按钮的点击效果对应的Selector继续生效,就这么做。
getParent().requestDisallowInterceptTouchEvent(true) 屏蔽父view对事件的拦截处理。
HandlerThread 用以实现常见的Thread+Handler模型实现的复合型类。
android:duplicateParentState="true" 让控件跟随父控件的状态,比如点击事件,点击父控件子控件监听生效
VelocityTracker,可用于 View 滑动事件速度跟踪。
广播消息
LocalBroadcastManager 本地广播。更安全的本地广播机制,类似于EventBus的简化版。
Messenger 对AIDL的简化操作。AIDL 实现的封装,比手写 AIDL 更方便。
界面相关
过渡
android:animateLayoutChanges="true" 使布局中的某些子view的消失和增加具有动画平滑过渡效果。
SurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT) 设置SurfaceView透明。
ArgbEvaluator.evaluate(float fraction, Object startValue, ObjectendValue) 颜色渐变,常见于导航栏、标题栏的颜色。
ThumbnailUtils——帮助创建缩略图,可以创建图片和视频缩略图,非常实用(ThumbnailUtils.createVideoThumbnail()、 ThumbnailUtils.extractThumbnail())
Fragment
FragmentManager.enableDebugLogging () 开启Fragment的debug日志记录。**
Fragment的setUserVisibleHint 在这个方法里面可以实现Fragment的懒加载,比如:
@Override public void setUserVisibleHint(boolean isVisibleToUser) { if (isVisibleToUser) { //加载 } else { //不加载 } }
这在ViewPager结合Fragment的代码中实现懒加载很有用。因为Android官方默认当创建第一个Fragment时回创建第二个Fragment以确保用户平滑滑动,第二个View已经被创建,这在某些时候会带来一定的加载开销。
相关文章推荐
- 安卓原生工具类--android开发不要盲目写工具了
- Android开发常用工具类(不定期进行更新)
- Android开发工具网站整理--持续更新
- android开发过程中遇到的问题小结(不定期更新)
- android开发细节(不定期更新)
- android 开发中用到的工具-持续更新(码农必看)
- Android 开发即时聊天工具 YQ 《更新》(源码下载)
- Android开发中实用工具之--Log工具类
- Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能
- Android开发中好用的开源工具(持续更新)
- android 开发遇到的问题总结--不定期更新
- Google推出Android 2.3 更新SDK和开发工具
- Android开发实用工具汇总-持续更新
- Android 开发环境搭建以及工具(不断更新)
- Android一些开发小技巧_不定期更新
- Android应用开发------------Json工具类(fastJson和Gson的两种工具类)
- Android中常用开发工具类—持续更新...
- Android开源项目发现--- 工具类快速开发篇(持续更新)
- Windows系统下用Eclipse开发工具开发Android应用程序,在更新ADT后会出This version of ADT requires......