Android开发中那些你不知道的事

做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()获得;

未完待续~~~


你可能感兴趣的:(Android开发中那些你不知道的事)