自定义View面试题

1. invalidate() 和 postInvalicate() 区别?


  • 二者都调用了invalidate()的代码,但是 postInvalicate() 通过 handler切换到了 UI线程,也就意味着我们如果想在子线程中更新UI,可以调用 postInvalicate();

2. 实现赞赏用户头像排列效果?


图片.png

自己写一个ViewGroup,往ViewGroup中添加CircleImageView,然后重写 onLayout()方法去摆放,不要从后台获取到图片url路径后去drawBitmap,这样子是不太好的,我们推崇的是在里边只调用 onLayout()摆放,更多的操作放在外边来做;

3. View的绘制流程是从Activity的哪个生命周期方法开始执行的?


onResume()之后开始

4. 请简述下边三种实例化View的区别,创建RecyclerView 的 item 下边哪种方式最好,还是都可以?


图片.png

第1、2最终都是执行第3个方法,所以只需要分析第3个方法就ok

第3个参数如果是true:表示把item-recycler布局文件添加到parent父布局容器中;
false表示:没有把 item_recycler布局文件添加到 parent父布局容器中;
但是如果第三个参数是false,比如父布局容器是FrameLayout(fl),然后 调用 fl.addView(item_recycler);效果就和 true一样,都表示把 item_recycler添加到 父布局容器中

你可能感兴趣的:(自定义View面试题)