http://blog.csdn.net/itachi85/article/details/50708391

前言

Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。

1.View简介

View是Android所有控件的基类,同时ViewGroup也是继承自View,看下面这张图我们就会有一个直观的了解: 

知道了View的层级关系有助于对View的理解,从上图可以发现我们常用的这些控件都是继承于View,如果我们更好的掌握了View的知识体系,那么我们在界面编程时则会更加的得心应手。

2.Android坐标系

Android中有两种坐标系,分别为Android坐标系和视图坐标系,首先我们先来看看Android坐标系。 
在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。

在下文讲到的MotionEvent提供的getRawX()和getRawY()获取的坐标都是Android坐标系的坐标。

3.视图坐标系

要了解视图坐标系我们只需要看懂一张图就可以了: 

View获取自身宽高

  • getHeight():获取View自身高度
  • getWidth():获取View自身宽度

View自身坐标

通过如下方法可以获得View到其父控件(ViewGroup)的距离:

  • getTop():获取View自身顶边到其父布局顶边的距离
  • getLeft():获取View自身左边到其父布局左边的距离
  • getRight():获取View自身右边到其父布局左边的距离
  • getBottom():获取View自身底边到其父布局顶边的距离

MotionEvent提供的方法

我们看上图那个深蓝色的点,假设就是我们触摸的点,我们知道无论是View还是ViewGroup,最终的点击事件都会由onTouchEvent(MotionEvent event)方法来处理,MotionEvent也提供了各种获取焦点坐标的方法:

  • getX():获取点击事件距离控件左边的距离,即视图坐标
  • getY():获取点击事件距离控件顶边的距离,即视图坐标
  • getRawX():获取点击事件距离整个屏幕左边距离,即绝对坐标
  • getRawY():获取点击事件距离整个屏幕顶边的的距离,即绝对坐标

Android View体系(一)视图坐标系相关推荐

  1. Android View体系(十)自定义组合控件

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源 ...

  2. Android View体系(五)从源码解析View的事件分发机制

    Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源码解析Sc ...

  3. Android View体系(1)

    Android View体系 Activity并没有与ViewRoot和View树有直接的联系,它含有一个Window对象 private Window mWindow; Window是一个抽象类,持 ...

  4. Android View体系‘铁三角‘

    前言 在搞Android开发的时候,和View的交互是必不可免的,因为我们肉眼可见,可以控制操作最直观的也是View,因此很有必要来吹水一下整个View体系的'铁三角',既View 绘制流程,View ...

  5. Android View体系(三)属性动画

    上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...

  6. Android View体系(六)从源码解析Activity的构成

    前言 本来这篇是要讲View的工作流程的,View的工作流程主要指的measure.layout.draw这三大流程,在讲到这三大流程之前我们有必要要先了解下Activity的构成,所以就有了这篇文章 ...

  7. Android View体系(3)

    View Tree的遍历时机 遍历ViewTree时机: 1.应用程序刚启动时: ViewRootImpl.java public void setView(View view, WindowMana ...

  8. Android View体系(4)

    View Tree的遍历流程 遍历主体performTraversals UI显示三要素:尺寸大小.位置和内容,它们在遍历过程中分别对应以下函数: 尺寸大小:performMeasure()用于计算V ...

  9. Android View体系(2)

    View 在WMS中注册窗口 当ViewRootimpl构造的时候,它需要建立与WMS通信的双向通道,分别是: ViewRootImpl->WMS:IWindosSession; WMS-> ...

最新文章

  1. opencv中image watch插件安装与使用教程
  2. oracle union 最多_用户来稿:我就是那个在优买计划赚钱最多的男人
  3. 10.3 广州集训 Day2
  4. php面试题之一——PHP核心技术(高级部分)
  5. java 调用 rsync_运行rsync时,QProcess不显示任何输出
  6. 数字式轮胎气压计行业调研报告 - 市场现状分析与发展前景预测
  7. linux之我常用的系统重要文件备份命令
  8. Struts1表单验证方式
  9. C#Redis 事务操作
  10. 电脑一拖二的学习方法
  11. facebook第三方登陆
  12. 黎曼猜想 量子计算机,理解黎曼猜想(一)背景
  13. 华科计算机硕士毕业论文,华中科技大学硕士毕业论文要求_华中科技大学2020年硕士招生简章_华中科技大学研究生院...
  14. 从开发的软件《备件仓库管理系统》总结的一些经验
  15. Microsoft Visual Studio 2013 产品密匙
  16. python游戏编程快速上手pdf_Python游戏编程快速上手 (斯维加特著) 中文pdf完整版[18MB]...
  17. Spring Data Neo4j解除两个节点之间的关系
  18. 瞬时频率函数matlab,瞬时频率估计的相位建模法及Matlab的实现
  19. 计算机报录比多少算高,报录比多少合适?怎么算好考?我来告诉你答案
  20. IntelliJ IDEA 实现接口方法的快捷键

热门文章

  1. ELK实时分析之php的laravel项目日志
  2. git同一项目使用多个远程仓库
  3. ospf和pat及nat的配置
  4. jQuery火箭图标返回顶部代码
  5. samba服务中,关于读写(也就是下载和上传)权限的优先级
  6. RAID类型及软RAID的组建
  7. asp.net编程:asp.net中如何设置页面的编码
  8. 学用 ASP.Net 之 字符串 (2): string.Format
  9. IT创业光技术好,谋略定位不好,你很可能会死得很惨,丢钱、丢客户、丢成果、丢商机、丢思路...
  10. SQL Server自带备份整个数据库脚本工具