首页
杂侃
前端开发
Vue.js
Node.js
Angular
JavaScript
jQuery
Node.js
React.JS
Sass/Less
Typescript
WebApp
小程序
HTML/CSS
Bootstrap
后端开发
PHP
Python
Nginx
MySQL
移动开发
iOS
Android
UI设计&多媒体
硬件开发
树莓派
ESP8266
游戏开发
云计算&大数据
运维&测试
实验室
当前位置:
首 页
>
移动开发
>
android
> 查看文章
28
2017-09
Android开发中,那些相见恨晚的方法、类和接口
android
,
移动开发
你是第3982个围观者
0条评论
供稿者:
陈 建鑫
标签:
android
getParent().requestDisallowInterceptTouchEvent(true);剥夺父view 对touch 事件的处理权,谁用谁知道。
ArgbEvaluator.evaluate(float fraction, Object startValue, Object endValue); 用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色,分分钟实现类似于微信底部栏滑动颜色渐变。
Canvas中clipRect、clipPath和clipRegion 剪切区域的API。
Bitmap.extractAlpha ();返回一个新的Bitmap,capture原始图片的alpha 值。有的时候我们需要动态的修改一个元素的背景图片又不希望使用多张图片的时候,通过这个方法,结合Canvas 和Paint 可以动态的修改一个纯色Bitmap的颜色。
HandlerThread,代替不停new Thread 开子线程的重复体力写法。
IntentService,一个可以干完活后自己去死且不需要我们去管理子线程的Service。
Palette,5.0加入的可以提取一个Bitmap 中突出颜色的类,结合上面的Bitmap.extractAlpha,你懂的。
Executors. newSingleThreadExecutor();这个是java 的,之前不知道它,自己花很大功夫去研究了单线程顺序执行的任务队列。。
android:animateLayoutChanges=”true”,LinearLayout中添加View 的动画的办法,支持通过setLayoutTransition()自定义动画。
ViewDragHelper,自定义一个子View可拖拽的ViewGroup 时,处理各种事件很累吧,嗯? what the fuck!!
GradientDrawable,之前接手公司的项目,发现有个阴影效果还不错,以为是切的图片,一看代码,什么鬼= =!
AsyncQueryHandler,如果做系统工具类的开发,比如联系人短信辅助工具等,肯定免不了和ContentProvider打交道,如果数据量不是很大的情况下,随便搞,如果数据量大的情况下,了解下这个类是很有必要的,需要注意的是,这玩意儿吃异常..
ViewFlipper,实现多个view的切换(循环),可自定义动画效果,且可针对单个切换指定动画。
有朋友提到了在自定义View时有些方法在开启硬件加速的时候没有效果的问题,在API16之后确实有很多方法不支持硬件加速,通常我们关闭硬件加速都是在清单文件中通过,其实android也提供了针对特定View关闭硬件加速的方法,调用View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);即可。
android util包中的Pair类,可以方便的用来存储一”组”数据。注意不是key value。
PointF,graphics包中的一个类,我们经常见到在处理Touch事件的时候分别定义一个downX,一个downY用来存储一个坐标,如果坐标少还好,如果要记录的坐标过多那代码就不好看了。用PointF(float x, float y);来描述一个坐标点会清楚很多。
StateListDrawable,定义Selector通常的办法都是xml文件,但是有的时候我们的图片资源可能是从服务器动态获取的,比如很多app所谓的皮肤,这种时候就只能通StateListDrawable
来完成了,各种addState即可。
android:descendantFocusability,ListView的item中CheckBox等元素抢焦点导致item点击事件无法响应时,除了给对应的元素设置 focusable,更简单的是在item根布局加上android:descendantFocusability=”blocksDescendants”
android:duplicateParentState=”true”,让子View跟随其Parent的状态,如pressed等。常见的使用场景是某些时候一个按钮很小,我们想要扩大其点击区域的时候通常会再给其包裹一层布局,将点击事件写到Parent上,这时候如果希望被包裹按钮的点击效果对应的Selector继续生效的话,这时候duplicateParentState就派上用场了。
includeFontPadding=”false”,TextView默认上下是有一定的padding的,有时候我们可能不需要上下这部分留白,加上它即可。
Messenger,面试的时候通常都会被问到进程间通信,一般情况下大家都是开始背书,AIDL巴拉巴拉。。有一天在鸿神的博客看到这个,嗯,如他所说,又可以装一下了。
TextView.setError();用于验证用户输入。
ViewConfiguration.getScaledTouchSlop();触发移动事件的最小距离,自定义View处理touch事件的时候,有的时候需要判断用户是否真的存在movie,系统提供了这样的方法。
ValueAnimator.reverse(); 顺畅的取消动画效果。
ViewStub,有的时候一块区域需要根据情况显示不同的布局,通常我们都会通过setVisibility的方法来显示和隐藏不同的布局,但是这样默认是全部加载的,用ViewStub可以更好的提升性能。
onTrimMemory,在Activity中重写此方法,会在内存紧张的时候回调(支持多个级别),便于我们主动的进行资源释放,避免OOM。
EditTxt.setImeOptions, 使用EditText弹出软键盘时,修改回车键的显示内容(一直很讨厌用回车键来交互,所以之前一直不知道这玩意儿)
TextView.setCompoundDrawablePadding,代码设置TextView的drawable padding。
ImageSwitcher,可以用来做图片切换的一个类,类似于幻灯片。
WeakHashMap,直接使用HashMap有时候会带来内存溢出的风险,使用WaekHashMap实例化Map。当使用者不再有对象引用的时候,WeakHashMap将自动被移除对应Key值的对象。
isShown(),以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰)。
getStackTrace(),Throwable接口中的getStackTrace()方法(或者Thread类的getStackTrace()方法),根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[]。
Application.registerActivityLifecycleCallbacks,用来监听一些Activity的回调。
setSelected(boolean),View类中的setSelected(boolean)方法结合android:state_selected=””用来实现图片选中效果。
说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧
https://github.com/cjx2328
—— 陈 建鑫
你可能也喜欢
Related Posts
Android Input子系统:Input进程的创建,监听线程的启动
聊聊组件开发过程中的内存优化
安卓开发常用工具和第三方库汇总
Android自定义View入门及实战案例分析
Handler 的初级、中级、高级问法,你都掌握了吗?
有没有必要阅读Android源码?
随机文章
实现前端资源增量式更新的一种思路
坦然面对:应对前端疲劳
iOS 后台下载及管理库
模板和UI Kit 还能从这7个方面帮你创造价值
前端高性能计算(2):asm.js & webassembly
ngxtop:在命令行实时监控 Nginx 的神器
Android 10 适配攻略,你适配了吗?
抓住那个语音交互设计师
借助CSS Shapes实现元素滚动自动环绕iPhone X的刘海
为提高用户体验,Yelp 是如何无损压缩图片的
标签云集
移动端识别
分布式
PHP小技巧
设计灵感
JavaScript小技巧
app设计
linux
Redis
android
Java
jupyter
交互设计
docker
mysql优化
javascript
electron开发
APP UI设计
zabbix
树莓派
docker命令
swoole
logo
ios
图标设计
前端开发
vue
iphone x
设计教程
APP设计参考
k8s
前端技术
react
adobe
大数据可视化
网页设计
docker的使用
数据库
webpack
golang小技巧
css
vue小技巧
php
ui设计
页面设计
python插件
MySQL小知识
mysql
nginx
docker小技巧
python
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©
ziao
Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@)
沪ICP备14052271号-3