当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Android滑动效果(一)- Android坐标研究

Android滑动效果(一)- Android坐标研究 时间:2018-09-25      来源:未知

Android中滑动效果的产生,无非是一个滑动一个view,本质上就是移动一个view。移动一个view,就要改变当前所处的位置,就需要不断的改变view的坐标来实现。所以,要实现view的滑动,就必须监听用户的触摸事件,并根据事件传入的坐标,动态且不断改变view大的坐标,从而实现view跟随用户触摸的滑动而滑动。所以,要想实现滑动效果,我们必须要了解一下Android中窗口坐标系和屏幕的触控事件——MotionEvent。

当用户触摸屏幕时,将创建一个MotionEvent对象。MotionEvent包含关于发生触摸的位置和时间等细节信息。MotionEvent对象是与用于触摸相关的时间序列,该序列从用户首次触摸屏幕开始,经历手指在屏幕表面的任何移动,直到手指离开屏幕时结束。移动过程中会产生大量事件,每个事件都会产生对应的MotionEvent对象,来记录发生的操作、触摸的位置、使用多大的压力、触摸的面积、发生的时间等相关信息。综上所有的一切一切,都和Android中的坐标系脱离不了关系,所以我们先来研究下Android中的坐标系。

在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,从这个点向右是X轴的正方向,从这个点向下是Y轴正方向,如下图:

如上图所示,Android坐标系以手机屏幕左上角的顶点为坐标原点,从该点向右为x轴正方向,从该点向下为y轴正方向。而触控事件中,使用getRawX()和getRawY()方法,获取的坐标就是以这个坐标系为标准下的坐标值。

android中的另外一个坐标系叫做视图坐标系,它描述的是子视图在父视图中的位置。再贴一张图来说明,如下:

如上图所示,视图坐标系是以父视图的左上角为坐标原点的。相应的原点向右为x轴正方向,原点向下为y轴正方向。在触控中,通过getX()和getY()来获取的坐标值就是视图坐标系中的坐标值。

在android中,提供了非常丰富的方法来获得坐标值和相对距离。但是在使用这些方法的时候,一定要清楚是以哪个坐标系为标准来获取的。为了将这些方法一一说明清楚,我也准备了一张图,如下:

上面的那张图很好的说明了每个方法获得的坐标值或者距离都是从哪里到哪里的。说明一下,图中有三个黑色的框框,外层的是手机屏幕,中间层的是ViewGroup,内层的是ViewGroup中放置的view。

其实上图中标注的方法可以分为两类,一类是View提供的方法,一类是MotionEvent提供的方法。分别说明如下:

View提供的获取的坐标以及距离的方法:

getTop() 获取到的是view自身的顶边到其父布局顶边的距离

getLeft() 获取到的是view自身的左边到其父布局左边的距离

getRight() 获取到的是view自身的右边到其父布局左边的距离

getBottom() 获取到的是view自身底边到其父布局顶边的距离

MotionEvent提供的方法:

getX() 获取点击事件距离控件左边的距离,即视图坐标

getY() 获取点击事件距离控件顶边的距离,即视图坐标

getRawX() 获取到的是点击事件距离整个屏幕左边的距离,即绝对坐标

getRawY() 获取到的是点击事件距离整个屏幕顶边的距离,即绝对坐标

上一篇:使用iic进行数据传输时经常会碰到的状况及解决办法

下一篇:Android滑动效果(一)—Layout方法

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部