做Android3年多了,一直想写博客却一直没有动手,一是因为懒,二则还是因为懒...今天我的第一篇博客来分享下在Android开发过程中那些你不知道的事,一部分来源于知乎的一篇帖子(点击打开链接),一部分是我自己总结的。
1、View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的(╯□╰);
2、Arrays类中的asList(T... array)方法,数组转List集合;反过来List.toArray();
3、android.text.format.Formatter类中formatFileSize(Context, long)方法,用来格式化文件Size(B → KB → MB → GB);
4、android.media.ThumbnailUtils类,用来获取媒体(图片、视频)缩略图;
5、String类中的format(String, Object...)方法,用来格式化strings.xml中的字符串;Context类中getString(int, Object... )方法用起来更加方便;
6、View类中的三个方法:callOnClick(),performClick(),performLongClick(),用于触发View的点击事件;
7、TextView类中的append(String)方法,添加文本;
8、开发像微信的聊天界面时,要做到输入法软键盘弹出后当前界面不被弹出屏幕外、最后一条聊天内容不被遮盖,需要设置androidWindowSoftInputMode="stateHidden|adjustResize"、ListView属性android:transcriptMode="alwaysScroll"
9、getParent().requestDisallowInterceptTouchEvent(true);剥夺父view对touch事件的处理权,这个我用的比较多;
10、使用support v4包中的LocalBroadcastManager发送、注册监听广播会提高效率;
11、Android 16后view.setBackgroundDrawable()已不推荐被使用,总是有个横杠看起来很不爽,使用ContextCompat.getDrawable(Context context, int regId);实际上ContextCompat中还有很多非常使用的方法,大家可以自行查看;
12、Android 23也就是最新的棉花糖之后getColor(int regId)也不推荐被使用,跟11差不多,使用ContextCompat.getColor(int regId, Resource reg);
13、倒计时使用Android自带的CountDownTimer,非常好用,代码简介明了;
14、每一个View或是继承View的类都可以getHandler(),需要更新ui线程时避免创建过多的Handlerd对象;activity中可以使用runOnUiThread;
15、使用Handler传递消息可以使用handler.obtainMessage(),实现Message的重利用,避免创建过多的对象,如果消息不附带其他对象,可以使用handler.sendEmptyMessage;
16、fragment嵌套内部fragment的manager通过getChildFragmentManager()获得;
未完待续~~~