自定义View理论篇之View基础结构

自定义View理论篇之View基础结构

在学习一个东西的使用或者一项技能,首先就是要知道这个东西的出现解决的是什么问题,显而易见自定义View的出现就是系统自带的View不能满足我们的使用需求,我们需要根据自己所需来设计自己的view,也就是继承View类。

View的分类

View 主要分为两类:

类别解释特点
单一视图即一个View,如TextView不包含子View
视图组即多个View组成的ViewGroup,如LinearLayout包含子View

View 类简介

  • View类是Android中各个组件的基类,如View是ViewGroup的基类
  • View表现为在屏幕中各种视图

View的构造函数

在自定义View的时候必须重写至少一个构造函数!

    //直接通过代码实例化时调用这个构造函数
    constructor(context: Context?) : super(context)
    //如果View 在XML中定义则会走这个构造函数,自定义属性是从AttributeSet传入的
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    //以下构造方法不会自动调用,一般在第二个构造函数中主动调用
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)

View 视图结构

这里主要制的是View在视图显示中的嵌套关系。对于多个View的视图,结构是树形的,最顶层的则是ViewGroup,下面可以包含若干个子View及嵌套View。

image

无论是measure过程、layout过程还是draw过程,永远都是从View树的根节点开始测量或计算(即从树的顶端开始),一层一层、一个分支一个分支地进行(即树形递归),最终计算整个View树中各个View,最终确定整个View树的相关属性。

Android 坐标系

Android坐标系定义为:

  • 左上角为坐标原点
  • 向右为X轴方向
  • 向下为Y轴方向

image

注:区别于一般的数学坐标系

image

View位置(坐标)描述

  • View的位置由4个顶点决定的(如下A、B、C、D)

image

4个顶点的位置描述分别由4个值决定(View的位置是相对于父控件而言的)

  • Top:子View上边界到父view上边界的距离
  • Left:子View左边界到父view左边界的距离
  • Bottom:子View下边距到父View上边界的距离
  • Right:子View右边界到父view左边界的距离

image

image

下一章导航:自定义View三大流程理论篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值