Android View getX getLeft getTranslationX layoutparams.leftMargin的值

原创 2015年01月09日 00:04:54

转载请标明出处【http://blog.csdn.net/hlglinglong/article/details/42536865

1、概述

Android系统中德坐标系统比较复杂,各种绝对和相对坐标用起来真的很容易混淆。
开发中经常用到View的一些坐标,一些值经常搞混,今天就来总结下。

2、Android View layout()

android.view.View.layout(int l, int t, int r, int b)    
l Left position, relative to parent
t Top position, relative to parent
r Right position, relative to parent
b Bottom position, relative to parent
文档上写的很清楚,这四个参数都是相对于父视图来说的。
layout的过程就是确定View在屏幕上显示的具体位置,在代码中就是设置其成员变量mLeft,mTop,mRight,mBottom的值,这几个值构成的矩形区域就是该View显示的位置,不过这里的具体位置都是相对与父视图的位置mLeft代表当前view.layout的这个view的左边缘离它的父视图左边缘的距离mTop指当前view的上边缘离父视图上边缘的距离。而以此为界,mRight所指的是当前view的右边缘离父视图左边缘的距离(mLeft+自己的宽度),mBottom也是指当前view的下边缘离父视图的上边缘的距离。至于为何如此,大概是因为坐标系的缘故,坐标中的任何点都必须以(0,0)为起点,XY轴为衡量。

视图左侧位置  view.getLeft() 
视图右侧位置 view.getRight()

视图顶部位置 view.getTop();
视图底部位置 view.getBottom();
这四个方法所获取到的各个左上右下的值与layout的四个参数代表的是一样的,都是相对父视图的左边缘与上边缘。

3.View getTranslationX getTranslationY

he horizontal location of this view relative to its left position. This position is post-layout, in addition to wherever the object's layout placed it.
相对于自己左边(上边)的距离,移动后的数值。

4.View getX() getY()

android.view.View.getX() 
The visual x position of this view, in pixels. This is equivalent to the translationX property plus the current left property.
android.view.View.getY()
The visual y position of this view, in pixels. This is equivalent to the translationY property plus the current top property.
意思就是说获取到实际的View的x y 值,该值也是相对父视图而言的
并且该值 getX = getLeft + getTraslationX。最后得出的值也是相对父视图来说的。

5.LayoutParams getMargins

The left(top right bottom) margin in pixels of the child. 

获取到该View的四个边的边距,有可能是附近的其他子view,也有可能是相对父视图。要看实际的情况分析

一般来说,我们要动态的移动子view的位置,可以使用setmargins 相对父视图来实现,前提是不能跟其他子view发生关系

6.getPadding

Returns the left(top right bottom) padding of this view.
获得该view的内部缩进值(自己内部),相对于Margin(相对于其他view或ViewGroup). 


综上,要获取到view准确的位置,要根据设定去拿值
比如,给view设置margin后,然后用translation移动,最后值就可以用getmargin + getTranslation来计算。etc

android代码获取layout和设置margin

0x0001 原因需要动态设置一个textview的高度0x0002 codemsgTextView = (TextView) rootView.findViewById(R.id.scanning_...

Android动画精讲一:从setTranslationX谈属性动画和view动画的区别

最近又用到了动画,决定把几次项目里用到的动画走过的弯路总结一下,顺便梳理下android的动画体系。众所周知,android动画分三类:一是View 动画,又叫Tween动画,二是frame 动画(帧...

在代码中设置leftMargin和rightMargin值

布局文件如下:
  • cnmilan
  • cnmilan
  • 2014年07月30日 14:51
  • 20949

android View的getX getLeft getTranslateX以及MotionEvent的getX getRawX的区别与联系

这几天在研究嵌套滚动的东西,在处理滚动的时候,发现自己对上述一些方法了解还不深入,之后琢磨了一下,这里做个记录。 分两部分来看: 第一部分: View的getX()、getLeft()、g...

View的getLeft()、getTranslationX()和getX()的区别

View中的mTop、mTranslationY和y的区别

Android getx(),getRawX(),getTop()方法间的区别

public class Res extends Activity implements View.OnTouchListener {              Button btn = null...

Android View坐标系详解(getTop()、getX、getTranslationX...)

View 提供了如下 5 种方法获取 View 的坐标: 1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight(); 2. Vi...

Android MotionEvent中getX()和getRawX()区别以及View坐标getLeft(),getTop()一点理解

最近在看一位大神写的可以拖拽移动的GridView的实现,里面有很多通过getX(),...

View中有关位置的属性--getX、getScrollX、getLeft、getWidth等,基于sdk20

本文根据sdk20源码讲解了mLeft、mTop、mRight、mBottom对应的get/set方法、getWidth、getHeight、getMeasureWidth、getMeasureHei...

Android中各种getRawX,getX,getWidth,getTranslationX等的区别。

当我们在自定义View,或者处理一些滑动/触摸事件时,就需要计算距离操作了,而系统也提供了各种方法来满足我们不同的需求,有些东西你不用就很容易忘记,现在整理下,方便后面查找。希望对大家有帮助,如有谬误...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android View getX getLeft getTranslationX layoutparams.leftMargin的值
举报原因:
原因补充:

(最多只允许输入30个字)