转载自【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体系(一)视图坐标系

    http://blog.csdn.net/itachi85/article/details/50708391 前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件 ...

  2. android以view建坐标系,android自定义View——坐标系

    在开发过程中有的时候我们会实现一些特殊功能,如组件滑动到一定距离隐藏或显示.图片置顶等等,这个时候view的坐标就派上了用场了:同样在自定义控件的时候,坐标系也是经常用到的,下面记录一下在复习过程中v ...

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

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

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

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

  5. 【Android View】初识 View

    Android程序中的一个个界面都是由View组成的,下面让我们一起来了解一下View吧! View 的分类 如上图所示,系统的View大体分为两类,即View与ViewGroup,分别对应了控件与布 ...

  6. android 屏幕中心坐标原点,Android 的坐标系及矩阵变换

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android的坐标系 2D坐标系 android的2d坐标系如图所示,水平向右为X轴正方向,竖直向下为Y轴正方向,原点 ...

  7. Android动画坐标系详解

    前段时间写dialog底部弹出动画的时候明明觉得自己写的是对的,但效果却不对.相信很多人在写View动画的时候都遇到过这种情况.今天本文就对症下药,跟大家聊聊Animation动画坐标系,至于Anim ...

  8. Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin

    Android运行时候报错:android.view.InflateException: Binary XML file line #19: Binary XML file lin 这个问题自己大致在 ...

  9. android.view.InflateException: Binary XML file line #7: Binary XML file line #7

    错误如下 11-21 08:19:44.040 3608-3608/com.leon.oldrecyclerview E/AndroidRuntime: FATAL EXCEPTION: main   ...

最新文章

  1. cv python 样例_【CV实战】OpenCV—Hello world代码示例
  2. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...
  3. 移动应用发展远超Web 谷歌苹果将主导世界?联网的发展才刚刚开始
  4. 研究综述 | 多关系知识图谱表示学习综述
  5. 稳定的货源社区新版云乐购免费开源源码
  6. 高通CEO谈中国5G:原以为会晚个5-10年,结果第一年就推出了
  7. php生成11位不重复数字,php生成8位不重复字符串
  8. 【Android 第三方SDK】breakpad在linux下编译
  9. 腾讯云主机凌晨内存上涨、CPU100%的问题排查与解决
  10. 万彩办公大师多页PDF文档去掉空白部分合并到同一页
  11. 2020.12.10丨cufflinks 简介及使用说明
  12. git name consists only of disallowed characters:
  13. 180个非常有用的电脑知识
  14. 从技术层面浅析美链BEC从诞生到覆灭
  15. 酷狗的krc歌词文件的解析
  16. 投资大师巴菲特长期投资理念
  17. VB亲身开发一个Windows软件(三)界面设计
  18. Linux下搭建File Browser文件管理系统
  19. 亚马逊物流:2022年1月18日美国物流配送费用
  20. 【蓝桥杯单片机】DS1302模块

热门文章

  1. ORACLE_LOADER加载外部数据
  2. circshift 函数详解
  3. (转)自定义EndNote的输出样式(output style)
  4. C++类中成员变量的初始化有两种方式
  5. CUDA程序优化技巧
  6. linux系统源配置(根据自己理解编写,不当之处,敬请指教)
  7. linux无效家目录,Linux 家目录下文件夹消失?
  8. [云炬创业基础笔记]第二章创业者测试19
  9. 科大星云诗社动态20210808
  10. 为什么资本主义生产的一般趋势是资本有机构成的提高?2017-12-26