View位置参数与滑动全解析

  • 时间:
  • 浏览:0

测试文字点击事件有效

点击按钮的后后,滑动测试文字textView,打印textView的位置参数,后后监听textView的点击事件。

测试文字位置参数不变:

获取屏幕的深层与深层,后后重写Activity的onWindowFocusChanged措施,获取View的位置参数。后后刚开始我把哪几种措施直接写在onCreate中,获取到的值回会0。后后才知道,width、height、top、left等属性值是在Measure与Layout过程完成后后才后后开始正确赋值的,而Measure与Layout都晚于onCreate措施执行,所以onCreate中根本就取必须值!

测试文字点击事件有效

通过scrollTo/scrollBy措施来实现View的滑动

1.通过改变View的布局参数使得View重新布局从而实现滑动

当当.我当当.我当当.我当当.我一起去看一下测试结果:

6.使用补间动画实现view的移动:

4.使用scrollTo(int x, int y)措施进行移动:

使用属性动画实现的测试文字滑动,点击事件依然有效!!!

通过改变View的布局参数使得View重新布局从而实现滑动

测试文字位置参数不变:

这一 措施获取的是View在当前窗口的绝对坐标,看一下测试代码:

首先理解这兩个参数的意义:

测试文字的初始位置参数如下所示:

二. View的最小滑动距离

越来越这一 结果在可不都里能滑动的控件中是何如的呢,比如ListView,RecyclerView。着实对于这一 滑动的ViewGroup,当当.我当当.我当当.我当当.我在获取ViewGroup的坐标值时不用说时需考虑它到底滑动了哪几个(实际滑动的当当.我当当.我当当.我当当.我应该 看作是ViewGroup中的View在滑动)。获取到的结果与这里还是一样的,具体应用案例可参考我后后一篇博客:

测试代码:

一. View位置参数与坐标分析

固然加进去去另4个多父布局,是肯能scrollTo/scrollBy措施必须滑动view的内容,不用说能滑动view一种生活生活。

还是后后的布局,当当.我当当.我当当.我当当.我给测试文字加进去去另4个多触摸监听:

通过scrollTo/scrollBy措施来实现View的滑动,操作简单,适合对View内容的滑动

测试文字点击事件有效

三.View滑动全解析

1.使用layout(int l, int t, int r, int b)措施重新布局:

可通过以上措施获取到这一 常量,打印出来大小是8dp。当当.我当当.我当当.我当当.我当当.我处里滑动时,可不都里能利用这一 常量来做有些过滤,比如当两次滑动事件的距离小于这一 值,当当.我当当.我当当.我当当.我就可不都里能认为越来越达到滑动距离的临界值,后后可不都里能认为它们回会滑动的。后后做可不都里能有更好的用户体验。

width = right - left

height = bottom - top

2.View的getLocationInWindow()

View是Android中所有控件的基类,是一种生活生活界面层的控件的一种生活生活抽象,代表另4个多控件,常见的获取位置参数的措施有以下一种生活生活:

测试结果:

测试文字位置参数改变:

测试文字点击事件有效

这里的单位默认回会px,从以上结果当当.我当当.我当当.我当当.我可不都里能得到以下结论:

1.View的getTop(),getLeft(), getRight(),getBottom()

最后我将得到的宽高单位从(px)转加进去了(dp),可不都里能想看 大小与当当.我当当.我当当.我当当.我在xml中设置的一致,完美~

View的位置主要由它的兩个顶点来决定,分别对应View的兩个属性:top,left,right,bottom,其中top是左上角纵坐标 ,left是左上角横坐标,right是右下角横坐标,bottom是右下角纵坐标。时需注意的是,哪几种坐标回会相对于View的父容器来说的,后后它是一种生活生活相对坐标。具体参数看下图:

View的位置参数是相对于自身的父容器来说的,是相对坐标可不都里能想看 测试文字的坐标参数是相对于所有人的父容器计算的。

一起去看看为甚实现的:

线性布局竖直排列,从上到下依次为另4个多Button,另4个多包括TextView的线性布局,深层,深层,边距的设置如图所示。看看在Activity中为甚获取它的位置参数:

后后本来我Activity里的代码:

关于正确获取组件的宽高,可参考以下这篇博文:

越来越综合对比这一 种生活生活措施,所有人的特点是哪几种呢:

测试文字点击事件有效

通过加进去去不同的措施来滑动测试文字,后后打印位置参数。所有措施的测试结果的示例图如下:

通过动画给View施加平移效果来实现滑动,操作简单,主要适用于越来越交互的View和实现复杂性的动画效果

打印结果里的线性布局本来我父线性布局。可不都里能想看 ,这一 线性布局的绝对纵坐标包括了通知栏与情況栏的深层,当当.我当当.我当当.我当当.我在实际项目运用这一 措施的过程中,一定记得减去这一 深层。肯能Android坐标系的原点在屏幕的左上角(不包括情況栏与标题栏的帕累托图)。

使用补间动画实现的测试文字滑动,会意味测试文字的点击事件无效,只特别击原区域,事件才会有效!!!

2.通过scrollTo/scrollBy措施来实现View的滑动

首先看一下当当.我当当.我当当.我当当.我测试的布局文件

通过动画给View施加平移效果来实现滑动

目前Android中实现View的滑动可不都里能分为一种生活生活措施:

TouchSlop是系统所能识别出的最小的滑动距离,肯能两次滑动之间的距离小于这一 常量,越来越系统就不认为你是在进行滑动操作。

测试文字位置参数不变:

3.MotionEvent的getX(),getY(),getRawX(),getRawY()

3.使用LayoutParams措施动态修改布局参数:

3. 通过动画给View施加平移效果来实现滑动

测试文字位置参数不变:

在Android中,坐标系的原点在屏幕的左上角(不包括情況栏与标题栏的帕累托图),x轴和y轴的正方向分别为向右和向下,这一 点特别要。

关于view的scrollTo措施,我在 RecyclerView学习(三)—-高仿知乎的侧滑删除 这篇博客所含很全版的介绍,当当.我当当.我当当.我当当.我也可不都里能参考启舰大神的ListView滑动删除实现之二——scrollTo、scrollBy详解。

测试文字位置参数不变:

通过改变View的布局参数使得View重新布局从而实现滑动 ,操作稍微复杂性,适用于有交互的View

5.使用scrollBy(int x, int y)措施进行移动:

http://blog.csdn.net/tyk0910/article/details/51669205

后后点击测试文字,看一下打印的结果:

7.使用属性动画实现view的移动:

getX():获取点击事件相对控件左边的x轴坐标,即点击事件距离控件左边的距离

getY():获取点击事件相对控件顶边的y轴坐标,即点击事件距离控件顶边的距离

getRawX():获取点击事件相对整个屏幕左边的x轴坐标,即点击事件距离整个屏幕左边的距离

getRawY():获取点击事件相对整个屏幕顶边的y轴坐标,即点击事件距离整个屏幕顶边的距离

http://blog.csdn.net/qq_23547831/article/details/517645004

测试文字位置参数改变:

这里将一一解析这一 种生活生活措施的用法与区别:

View的宽高与坐标的关系:

2.使用offsetTopAndBottom(int offset)与offsetLeftAndRight(int offset)措施进行偏移: