美文网首页
自定义View理论

自定义View理论

作者: dashu52 | 来源:发表于2020-07-29 16:09 被阅读0次

    自定义View类型

    1. 自定义View

    在没有现成的View,需要自己实现的时候,就使用自定义View,一般继承自View,SurfaceView或其他的View


    image.png

    2. 自定义ViewGroup

    自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件,大多继承自ViewGroup或各种Layout


    image.png

    自定义View流程

    image.png

    所以,自定义View任督二脉就在于此:
    自定义View主要是实现 onMeasure + onDraw
    自定义ViewGroup主要是实现onMeasure + onLayout

    View的层级结构

    image.png

    View的绘制流程

    image.png

    Android两种坐标系

    image.png
    image.png

    相关知识点:

    1.LayoutParams 是什么?与MeasureSpec有关系吗?
    前者:是存储xml中配置参数的
    后者:是View的一个内部类
    存在一种转化关系
    2.MeasureSpec 是什么?
    MeasureSpec是View中的内部类,基本都是二进制运算。由于int是32位的,用高两位表示mode,低30位表示size,MODE_SHIFT = 30的作用是移位
    UNSPECIFIED:不对View大小做限制,系统使用
    EXACTLY:确切的大小,如:100dp
    AT_MOST:大小不可超过某数值,如:matchParent, 最大不能超过你爸爸

    3.为什么要MeasureSpec?
    为了将自定义View中子View xml中配置的宽高参数表达为Java代码


    image.png image.png

    4.getMeasureWidth与getWidth的区别?
    前者:
    在measure()过程结束后就可以获取到对应的值;
    通过setMeasuredDimension()方法来进行设置的.
    后者:
    在layout()过程结束后才能获取到;
    通过视图右边的坐标减去左边的坐标计算出来的.

    相关文章

      网友评论

          本文标题:自定义View理论

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