[Andorid开发艺术探索 读书笔记]View的事件体系(一)
来源:互联网 发布:港澳台直播软件 编辑:程序博客网 时间:2024/04/30 03:53
Android中,View的事件体系是一个很大也很重要的话题。
这篇博客中我们先来看一些关于View的一些基本概念和滑动的基础知识,在后面的博客中,我们会详细探索View的事件分发机制。
什么是View
View是Android中的所有控件的基类,不管是Button,TextView,还是RelativeLayout和ListView,他们共同的基类都是View,所以说,View是一种界面层的控件的抽象。除了View,还有ViewGroup,ViewGroup也继承了View,这就意味着View本身就可以是单个控件也可以是多个控件组成的一组控件,通过这种关系就形成了View树的结构。
比如说,我们知道Button显然是个View,而LinearLayout不但是一个View而且还是一个ViewGroup,而ViewGroup内部是可以有子View的,这个子View同样还可以有ViewGroup的,以此类推。
明白这种层级关系有助于理解View的工作机制。
View的位置参数
View的位置主要是由它的四个顶点来决定的,分别对应于View的四个属性:top,left,right,bottom,其中,top是左上角纵坐标,left是左上角横坐标。right是右下角横坐标,bottom是右下角纵坐标。需要注意的是,这个坐标都是相对于View的父容器来说的,因此是一种相对坐标,View的坐标体系和父容器关系如图:
注意这里的x轴和y轴和我们一般数学上的坐标轴正方向是相反的,其实不止Android,很多显示系统都是按照这个方向来的。
根据这个图示,我们很容易得到view的宽高和坐标的关系:
width = right - left
height = bottom - top
这四个参数分别对应View源码中的mLeft, mRight, mTop, mBottom 这四个成员变量。获取方式类似于left= getLeft();
从Android 3.0 开始,View增加了几个额外的参数:x,y,translationX和translationY。其中x,y是View左上角的坐标,translationX和translationY是View左上角相对于父容器的偏移量。这几个参数也是相对于父容器来说的。
值得注意的是translationX和translationY参数主要用在View平移中,当View发生平移的时候,之前介绍的top,left这些参数是不会变的,但是translationX和translationY这些参数会变。我们可以轻松得到:
x = left + translationX;
y = top + translationY;
MotionEvent和TouchSlop
MotionEvent
TouchSlop
- [Andorid开发艺术探索 读书笔记]View的事件体系(一)
- [Andorid开发艺术探索 读书笔记]View的事件体系(二)
- [Andorid开发艺术探索 读书笔记]View的事件体系(三)
- Android开发艺术探索读书笔记-View的事件体系(一)
- 《Android开发艺术探索》读书笔记--part3 View的事件体系
- Android开发艺术探索读书笔记-View的事件体系(二)
- View事件体系(Android开发艺术探索读书笔记)
- View的事件体系 - Android开发艺术探索读书笔记(第三章)
- Android开发艺术探索 读书笔记 第三章 View事件体系
- 《Android开发艺术》读书笔记(View的事件体系)
- 读书笔记-Android开发艺术探索-第3章-View的事件体系
- 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系
- 【读书笔记】【Android 开发艺术探索】第3章 View 的事件体系
- Android开发艺术探索读书笔记(第3章 View的事件体系)
- Android 开发艺术探索读书笔记 第三章 View的事件体系
- 读书笔记:Android开发艺术探索之第3章 View的事件体系
- 《Android开发艺术探索》读书笔记-第三章 View的事件体系
- Android开发艺术探索(连载)之View 的事件体系(一)view的基本知识
- 【python】Python之Excel操作:读写数据
- Git错误non-fast-forward后的冲突解决
- Android Studio实用插件推荐
- Android API 中文 (1) —— 了解生命周期回调
- APP安全测试
- [Andorid开发艺术探索 读书笔记]View的事件体系(一)
- CentOS修改系统时间
- 微信商户开发文档之扫码支付
- QtCreator调试设置(CDB调试设置)
- 设置jsp页面字段默认值
- 每日一算法--java的16进制与字符串的相互转换函数
- 实现多个按钮,点选一个其它都取消选中状态的方法
- 路由选择协议RIP与OSPF个人学习笔记
- CSS3 @font-face