自定义View面试题

作者: 世道无情 | 来源:发表于2018-05-05 17:55 被阅读21次

    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面试题

        本文链接:https://www.haomeiwen.com/subject/jmrerftx.html