Android自定义View系列之理论基础知识

本文围绕Android自定义View展开,介绍了View的来源,讲解了屏幕和布局坐标系,阐述了View的绘制流程,对自定义View的实现方式进行分类,说明了构造函数的重写及初始化方法,还介绍了自定义属性的设置步骤和类型,为后续深入学习和实战奠定基础。

目录

一、View是怎么来的?

二、坐标系(屏幕坐标系和布局坐标系)

三、View的绘制流程

四、自定义View的实现方式分类

五、自定义View的构造函数

六、自定义View的自定义属性

七、总结

一、View是怎么来的?

做Android移动端开发,应该都接触过这个类:LayoutInflater,对我们所有的View都是都是通过这个类吹出来的,inflate就是“鼓吹”的意思。

三个inflate方法提供给外界调用,最终都会走到三参数的inflate方法。(第一个参数就是xml资源文件)

关于LayoutInflater这个类后面会出文章详细讲解。

二、坐标系(屏幕坐标系和布局坐标系)

在Android坐标系中,以屏幕左上角作为原点,这个原点向右是X轴的正轴,向下是Y轴正轴,所以开发中调用方法的时候就有了以屏幕上边和左边为参考值,有了参考值你才好定位呀。

除了上面说的Android坐标系,到了View布局的时候有布局坐标系(也称View坐标系,但这种坐标系是相对的,因为Android中的View/ViewGroup是嵌套存在),布局坐标的关系如下图

上图中最里层是一个View(如TextView/Button/ImageView...),里二层是一个ViewGroup(如FrameLayout/LinearLayout/RelativeLayout...),最外层当前也是个ViewGroup(可以是你自己写的layout的root布局,也可以是系统底层的FrameLayout,这个不重要,我们来分析里面的两层),由上图可以看出:

1、getTop()、getLeft()、getBottom()、getRight()得到的值的含义

我们平时调用的getTop()、getLeft()、getBottom()、getRight()就是获取View在布局坐标系中的位置值,这个值是相对于View父布局而言的,因为布局坐标系本来就是相对的。

所以通过如下方法可以获取View到其父控件的距离。

  • getTop();获取View顶部到其父布局顶边的距离。
  • getLeft();获取View左边到其父布局左边的距离。
  • getBottom();获取View底部到其父布局顶边的距离。
  • getRight();获取View右边到其父布局左边的距离。

实测证明上述结论:

所以就可算出View的高度:

  • width = getRight() - getLeft();
  • height = getBottom() - getTop();

View的源码当中提供了getWidth()和getHeight()方法用来获取View的宽度和高度,其内部方法和上文所示是相同的,我们可以直接调用来获取View得宽高。

2、getX()和getY()     ||     getRawX()和getRawY()得到的值的含义

getX()和getY()是触屏到某个View时候调用的方法,代

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值