【Android】getX,getRawX,getWidth,getTranslationX等的区别
来源:互联网 发布:蘑菇街的域名是什么 编辑:程序博客网 时间:2024/06/07 03:24
转载请注明出处:http://blog.csdn.net/dmk877/article/details/51550031
好久没写博客了,最近工作确实挺忙的,刚刚结束了一个TV项目的开发,对于第一次开发TV项目的我表示:还是手机开发好啊。本来以为TV项目开发完了可以休息几天但是我还是想多了,哈哈,马上就要进行新项目的开发,唉,说多了都是眼泪啊,废话不多说咱们进入正题,今天和大家一起讨论的是android中的一些距离,可能在日常的开发中我们会经常遇到,但是有时候这几个概念又特别容易弄混,所以今天我就总结了getX,getRawX,getWidth等的区别。希望对大家有帮助,如有谬误,欢迎批评指正,如有疑问欢迎留言
一、getX、getRawX、getTranslationX等的图形表示
首先我们来看看这几个方法在图形上的表示,然后再用代码的形式进行验证我们来看下这几个方法的几何图形的表示:
上面只是用图片表示了这几个距离的意义,下面我们用文字来描述一下,然后通过案例来验证一下大家就彻底明白这几个距离的意义了。
二、getX、getRawX、getTranslationX意义的文字描述
event.getX():表示的是触摸的点距离自身左边界的距离 event.getY():表示的是触摸的点距离自身上边界的距离event.getRawX:表示的是触摸点距离屏幕左边界的距离event.getRawY:表示的是触摸点距离屏幕上边界的距离 View.getWidth():表示的是当前控件的宽度,即getRight()-getLeft()
View.getHeight():表示的是当前控件的高度,即getBottom()-getTop() View.getTop():子View的顶部到父View顶部的距离View.getRight():子View的右边界到父View的左边界的距离 View.getBottom():子View的底部到父View的顶部的距离 View.getLeft():子View的左边界到父View的左边界的距离 View.getTranslationX()计算的是该View在X轴的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。 View.getTranslationY()计算的是该View在Y轴的偏移量。初始值为0,向上偏移为负,向下偏移为证。
细心的同学会发下上面多了个getTranslationX,这个计算的是该View在X轴的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。由于用用图形不好表示,在后面会有一个案例来说明它的意义。
三、案例理解getX、getRawX、getTranslationX的用法
接下来我们通过两个案例来理解getX、getRawX、getTranslationX的意义,首先来看下运行效果图:然后我来解释下这个布局首先最外面那个是手机屏幕,然后里面的白色矩形是里面黑色矩形的父View,中间的那个小的白点是我们点击的一个点,它处于屏幕的正中央,其中屏幕的分辨率是480*320,我们都知道在这种分辨率下1dp=1px,然后白色矩形的宽和高都是300dp,中间黑色矩形的宽和高都是150dp,中间黑色区域是rlCenter,中间的小白点是ivDot大家可以算一下rlCenter.getWidth,rlCenter.getX,rlCenter.getRawX以及rlCenter.getTop,rlCenter.getBottom等,然后和后面打印的日志对比下,首先来看下代码:
然后看下打印的结果:与你计算的一样吗?其中大家看到的可能会有0.0几的误差因为中间的那个小白点是2dp,可能点击的时候并不是刚好是正中间但是并不影响我们的测试。好了到这里相信大家对这几个概念应该有了比较清楚的认识。接着我们来看下getTranslationX,上面我们提到它计算的是该View在X轴的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。怎么来验证它呢?用属性动画及可以做到,首先我们来看下代码:
看到了吧,刚开始打印的getTranslationX为0,然后我们执行属性动画这个属性动画就是让这个View向右移动100px之后再打印发现它的值变成了100,这也验证了我们的说法。
好了这一篇博客就到这里了相信大家对这几个概念应该很清楚了,
如果在阅读过程中发现错误,谢谢指正。
转载请注明出处:http://blog.csdn.net/dmk877/article/details/51550031
- Android开发之getX,getRawX,getWidth,getTranslationX等的区别
- Android开发之getX,getRawX,getWidth,getTranslationX等的区别
- Android开发之getX,getRawX,getWidth,getTranslationX等的区别
- Android中各种getRawX,getX,getWidth,getTranslationX等的区别。
- Android开发之getX,getRawX,getWidth,getTranslationX等的区别
- 【Android】getX,getRawX,getWidth,getTranslationX等的区别
- measure getMeasuredWidth/getWidth getRawX/getX的作用和区别
- 关于getRawX和getX、getMeasureWidth和getWidth之间的区别
- Android中getX()、getRawX()、getScrollX()、scrollTo()、scrollBy()等的区别
- getX getRawX的区别
- getX getRawX的区别
- getX getRawX的区别
- android MotionEvent getX getRawX getScrollX 的区别
- Android Event.getX 与getRawX的区别
- Android getX()和getRawX()的区别
- 安卓中的getX,getRawX等的区别
- getX(),getRawX(),getLeft()的区别
- getX()和getRawX()的区别
- 167. Two Sum II
- 【Angular2】基于localStorage实现本地备份操作记录
- LR11:手动关联
- Android 性能优化(一)
- Spring 5.0响应式编程
- 【Android】getX,getRawX,getWidth,getTranslationX等的区别
- Spotlight1 一词多义(Polysemy)
- 过拟合解决方案
- 23. 多态性(虚函数)
- 手游外挂入侵(一)某助手加速器实现原理探究
- java 中split 特殊符号处理
- 数据结构实验之排序二:交换排序
- 深度学习: AlexNet 网络
- 【章节4】数据表的查看、修改和删除