首页
杂侃
前端开发
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
,
移动开发
你是第3931个围观者
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
GridLayoutManager 这么用,你可能还真没尝试过
RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
在Android上实现HttpServer
如何解决代码中 if…else 过多的问题
最新 21 款Android 自定义View及炫酷动画开源框架,总有一款适合你!
Android 开发者,如何在移动开发寒冬中快速提升职场竞争力?
随机文章
项目运行报错Error: Static interface methods are only supported starting with Android N (--min-api 24)
React 许可证的五宗罪
14 个你可能不知道的 JavaScript 调试技巧
UX与心理学携手共进——如何在交互设计中应用格式塔理论?
作为设计师,连练习都不会做?
iPhone X 适配 手Q H5页面通用解决方案
神秘的 10 倍效率程序员
你需要了解的前端测试“金字塔”
国外优秀WEB网页设计精选
浏览器HACK集合
标签云集
php
iphone x
设计灵感
ui设计
mysql优化
k8s
swoole
python插件
Redis
JavaScript小技巧
图标设计
docker命令
webpack
vue
ios
vue小技巧
MySQL小知识
docker的使用
前端开发
docker
数据库
linux
Java
APP UI设计
docker小技巧
分布式
大数据可视化
electron开发
zabbix
python
设计教程
jupyter
mysql
adobe
交互设计
logo
网页设计
APP设计参考
PHP小技巧
android
树莓派
golang小技巧
页面设计
nginx
app设计
css
javascript
移动端识别
react
前端技术
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©
ziao
Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@)
沪ICP备14052271号-3