自定义View

本文介绍了自定义控件的两种类型:自定义View与自定义ViewGroup,并详细讲解了它们之间的区别与联系,以及如何遵循View的绘制流程来实现自定义控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义控件的分类

自定义控件有两种:自定义View,自定义ViewGroup

View

View或者View的一个子类,不能有子View,提供具体功能,比如:

系统自带的View:
    Button,用来用户点击的View
    TextView,显示文本的View
    EditText,实现输入
    ......
自定义View:
    继承自View,实现某种效果....

ViewGroup

ViewGroup继承自View,可以有自View,提供了具体的功能,同时能够管理子控件,大小,摆放位置,绘制….

    系统ViewGroup:
        LinearLayout:让子View按照某种规则摆放
        RelayTiveLayout
        ........
    自定义ViewGroup:
        如组合控件....

View与ViewGroup的关系

继承

这里写图片描述

如上图:

ViewGroup实现了ViewManager,ViewParent等借口,继承自View,同时有很多实现类.
ImageView,TextView直接继承了View.....

组合

这里写图片描述

如这张图展示:

ViewGroup有子View,同时有子ViewGroup,子ViewGroup同时可能有子View或者子ViewGroup,呈树状递归的关系.

View的绘制流程

一个View或者ViewGroup究竟是怎么样绘制显示出来的呢?要搞懂这个问题,我们需要弄清楚View的绘制流程.
View绘制的时候有3个重要的方法需要知道:measures–>layout–>draw
注意:
这三个方法都是final的,子类不能复写.

1.measures:测量,控制控件的大小
    自定义时,自己要控制子控件的大小-->子类复写onMeassure

2.layout:摆放,控制控件的位置
    自定义时,自己要控制子控件的摆放位置-->子类复写onLayout
    几个参数:left,right,top,bottom是相对自己的直系父容器的位置(不要越级,一个View只有其父能管理,爷爷不能控制)

3.draw:绘制,控制显示的样子
    自定义时,自己要控制子控件的样式-->使用画板canvas.draw()

流程图

这里写图片描述
在开发的时候,只要遵循View的绘制流程实现自定义控件就不是难事!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值