美文网首页安卓考点脉络
【视图绘制/自定义控件】

【视图绘制/自定义控件】

作者: 小呀么小黄鸡 | 来源:发表于2018-02-24 09:46 被阅读6次

    控件绘制

    测量 measure 确定View的测量宽高
    布局 layout 确定View的最终宽高和四个顶点位置
    绘制 draw 将View绘制在屏幕上

    measure

    view调用后测量自身,ViewGroup除了完成自己的测量,还会调用子元素的测量。各子元素再递归执行
    最重要的方法是getDefaultSize,根据MeasureSpec去取SpecMode和SpecSize

    MeasureSpec(一个32位int值)
    很大程度上决定了一个View的尺寸规格(普通view的measureSpec由父容器的MSLP和自身决定),测量过程中,系统会将View的LayoutParams根据父容器的规则转换成MeasureSpec,再用它测量出View的宽/高。这个这个值的高两位代表SpecMode,低30位代表SpecSize,并提供了打包和解包的方法。
    SpecMode有三种:
    UNSPECINED:父容器对View不做任何限制,一般用于系统内部
    EXACTLY:对应layoutParams中的match_parent和具体数值,意为父容器已检测出View所需的精确大小,这是view的最终大小就是SpecSize的值
    AT_MOST:对应LayoutParams中的wrap_content,意为父容器制定了一个可用大小即SpecSize,View的大小只要不大于这个值就由View自己定

    layout

    对ViewGroup的作用在于确定子元素的位置,当ViewGroup的位置被确定后,它在onLayout中会遍历所有的子元素并调用其layout方法

    draw

    将View绘制到屏幕上面
    (1)绘制背景
    (2)绘制自身
    (3)绘制children
    (4)绘制装饰

    自定义控件

    1. 对现有的控件进行拓展(特定显示效果)
    2. 通过组合来实现新的控件(为了特定功能,解决多次重复使用同一类型的布局,如应用标题栏)
    3. 重写View来实现全新的控件

    相关文章

      网友评论

        本文标题:【视图绘制/自定义控件】

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