自定义View系列(一)

一、

首先我们要明白为什么要自定义View,主要是Android系统内置的View无法实现我们的需求,我们需要针对我们的业务需求定制我们想要的View。自定义View的价值在于:

1、能够做到基础控件无法做到的效果,为应用的表现增色;

2、在多个应用并行开发的团队,将公用的交互效果提取成自定义控件,方便复用,减少不必要的重复劳动;

3、将控件的内部逻辑封装在自定义View中,便于应用内解耦。

 

 

二、

自定义的View的实现有三种方式:继承已有控件(比如ImageView、EditText);完全自定义控件;组合控件。

 

 

三、

在这里,我们先来温故下关于View的基础知识。

1、View的分类。View分为两类:单一视图和视图组。

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

 

2、View的构造方法。View一共有四个构造方法,如下:

//如果View是在Java代码里new的,则调用第一个构造方法

View(Context context)

//如果View是在.xml里声明的,则调用第二个构造方法。自定义属性是通过AttributeSet 参数传递进来的。

View(Context context, AttributeSet attrs)

//不会自动调用

View(Context context, AttributeSet attrs, int defStyleAttr)

//API21之后才使用。不会自动调用。

View(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

 

3、View视图结构。

对于多View的视图,结构是树形结构,最顶层是ViewGroup,ViewGroup下可能有多个ViewGroup或View。

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

 

4、Android坐标系。

Android坐标系定义为:

  • 屏幕的左上角为坐标原点
  • 向右为x轴增大方向
  • 向下为y轴增大方向

如下图

 

5、View位置(坐标)描述。

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

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

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

如下图:

 

 

四、自定义View涉及到的核心方法。

1、onMeasure  用于测量视图的大小

2、onDraw  用于对视图进行绘制

3、onLayout  用于给视图进行布局

 

本文就到这里,后续的系列文章将结合实例继续讲解自定义View。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值