安卓原生工具类--android开发不要盲目写工具了(不定期更新)

前言

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() 设置错误信息(一般在输入框中使用)

mark

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
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已经被创建,这在某些时候会带来一定的加载开销。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值