Android开发中,那些让人相见恨晚的function

以下总结的是一些android 开发中,非常实用的一些方法,满满都是干货哦,发车了,滴,滴滴。


布局部分



includeFontPadding="false" textView中字体上下默认是有一定padding的,有时候我们不需要这个padding,可以直接设置此属性即可。


android:backgroundTintMode(Boolean) 可以设置背景填充模式,配合background、backgroundTint使用


android:clipChildren (Boolean) viewgroup是否限制子view的绘制范围


android:clipToPadding (Boolean) 控制view的绘制区域是否在padding里面,在滑动的时候很有用


android:fillViewport (ScrollView) 可以解决在 ScrollView 中当内容不足的时候填不满屏幕的问题


android:descendantFocusability 可以控制viewgroup以及child获取焦点的先后顺序


android:largeHeap="true" 简单粗暴的防止应用OOM,但是这个治标不治本


android:animateLayoutChanges="true" ViewGroup中添加和删除控件会有默认动画


android:enterFadeDuration/android:exitFadeDuration (Drawables) 此属性在 Drawable 具有多种状态的时候,可以定义它展示前的淡入淡出效果。


android:duplicateParentState="true",让子View跟随其Parent的状态,如pressed等。常见的使用场景是某些时候一个按钮很小,我们想要扩大其点击区域的时候通常会再给其包裹一层布局,将点击事件写到Parent上,这时候如果希望被包裹按钮的点击效果对应的Selector继续生效的话,这时候duplicateParentState就派上用场了


Merge 此标签可以在另一个布局文件中包含别的布局文件,而不用再新建一个 ViewGroup,对于自定义 ViewGroup 的时候也需要用到;可以通过载入一个带有标签的布局文件来自动定义它的子部件。





view相关



ValueAnimator.reverse() 顺畅的取消动画效果。


TextView.setError() 在TextView输入错误验证时很有用


Activity.startActivities() 常用于在应用程序中间启动其他的Activity


View.inflate() 一步直接inflate view


ViewCompat.setElevation() 设置view的base elevation, 低版本也能用


ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保证所有触摸的交互都是统一的。这个方法获取的值表示:用户的手滑动这个距离后,才判定为正在进行滑动.当然这个值也可以自己来决定.但是为了一致性,还是使用标准的值较好
-    GestureDetector 用来监听和相应对应的手势事件,比如点击,长按,慢滑动,快滑动,用起来很简单,比你自己实现要方便许多。


ViewStub它是一个初始化不做任何事情的 View,但是之后可以载入一个布局文件。在慢加载 View 中很适合做占位符。唯一的缺点就是不支持标签,所以如果你不太小心的话,可能会在视图结构中加入不需要的嵌套。


ViewTreeObserver ——这是一个很棒的工具。可以进入到 VIew 里面,并监控 View 结构的各种状态,通常我都用来做 View 的测量操作(自定义视图中经常用到)。
-ViewDragHelper ——视图拖动是一个比较复杂的问题。这个类可以帮助解决不少问题。如果你需要一个例子,DrawerLayout就是利用它实现扫滑。


Path.computeBounds(RectF,Boolean) 计算不规则path的边界,判断一个点是否在path内。


Region.op() 两个区域剪切的模式


StaticLayout 自定义view中渲染文本时有用,比如自动换行- Pair.create() 方便构建类和构造器的方法。





一些有用的工具类



Application.registerActivityLifecycleCallbacks 一个监听Activity生命周期的回调,用了都说好


onTrimMemory 在Activity中重写此方法,会在内存紧张的时候回调(支持多个级别),便于我们主动的进行资源释放,避免OOM。


Context.getCacheDir() 获取缓存数据文件夹的路径,很简单但是知道的人不多,这个路径通常在SD卡上(这里的SD卡指的是广义上的SD卡,包括外部存储和内部存储)Adnroid/data/您的应用程序包名/cache/ 下面.测试的时候,可以去这里面看是否缓存成功.缓存在这里的好处是:不用自己再去手动创建文件夹,不用担心用户把自己创建的文件夹删掉,在应用程序卸载的时候,这里会被清空,使用第三方的清理工具的时候,这里也会被清空


UrlQuerySanitizer 使用此类处理一个Url链接很方便,可以直接拿到url中参数值


LocalBroadcastManager 一个在应用内传播的广播,更效率,安全。类似EventBus


Linkify.addLinks() 在Text上添加链接。很实用。


ActivityManager.clearApplicationUserData() 使用系统ActivityManager直接清除掉用户的数据,退出登录的时候很实用。


IntentService 一个用完会自己关闭的service


PackageManager.checkSignatures ()——如果同时安装了两个 app 的话,可以用这个方法检查。如果不进行签名检查的话,其他人可以轻易通过使用一样的包名来模仿你的 app。
-SparseArray——Map的高效优化版本。推荐了解姐妹类SparseBooleanArray、SparseIntArray和SparseLongArray。


PackageManager.setComponentEnabledSetting()——可以用来启动或者禁用程序清单中的组件。对于关闭不需要的功能组件是非常赞的,比如关掉一个当前不用的广播接收器。
-ThumbnailUtils——帮助创建缩略图。通常我都是用现有的图片加载库(比如,Picasso 或者 Volley),不过这个ThumbnaiUtils可以创建视频缩略图。


Bitmap.extractAlpha ()返回一个新的Bitmap,capture原始图片的alpha值。有的时候我们需要动态的修改一个元素的背景图片又不希望使用多张图片的时候,通过这个方法,结合Canvas和Paint可以动态的修改一个纯色Bitmap的颜色。


Palette,5.0加入的可以提取一个Bitmap中突出颜色的类,结合上面的Bitmap.extractAlpha。


Executors. newSingleThreadExecutor() 单线程顺序执行的任务队列


StateListDrawable,定义Selector通常的办法都是xml文件,但是有的时候我们的图片资源可能是从服务器动态获取的,比如很多app所谓的皮肤,这种时候就只能通StateListDrawable来完成了,各种addState即可。


WeakHashMap,直接使用HashMap有时候会带来内存溢出的风险,使用WaekHashMap实例化Map。当使用者不再有对象引用的时候,WeakHashMap将自动被移除对应Key值的对象。


CountDownTimer Android自带倒计时类,不用自己new Timer了。


System.arraycopy() 数组拷贝





如果你有什么补充的,欢迎在下方留言飙车- _ -



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容