代码改变世界

[Android学习笔记]获取view的尺寸和坐标

2014-04-22 00:39  hellenism  阅读(702)  评论(0编辑  收藏  举报

对于UI方面很多时候需要获取它的很多信息,具体情况见view的文档

View文档

http://developer.android.com/training/index.html

 


 

 

常用方法:
获取view的宽高
getWidth()
getHeight()

 

获取当前view相对于[父元素]坐标系的原点.
此点对于当前view而言,是它的左上角点在父元素坐标系中的坐标
getX()
getY()

 

获取当前view相对于[父元素]坐标系的几个值
getLeft()
getTop()
getRight()
getBottom()

他们获取到的数据与layout(l,t,r,b)方法中的l,t,r,b一致

 

注意:以上获取到的数据的单位都是像素px


 

 

onCreate方法中获取view的尺寸,坐标信息

onCreate中可获得控件的引用,但是无法获取到控件的尺寸,坐标等信息,因为此时控件尚未被绘制所以无法得到这些信息,
如果实在需要view的尺寸和坐标,可以使用以下方法:

btn = (Button)findViewById(R.id.btn);
        ViewTreeObserver vto = btn.getViewTreeObserver();
        vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()
        {
            public boolean onPreDraw()
            {
                if (hasMeasured == false)
                {
                    // 获取btn的宽高 
                    int height = btn.getMeasuredHeight();
                    int width = btn.getMeasuredWidth();
                    Log.d("test","width:" + btn.getWidth() +" height:" + btn.getHeight());
                    
                    // 获取btn的坐标信息
                    Log.d("test",
                            " getWidth():" + btn.getWidth() +
                            " getHeight():" + btn.getHeight()+
                            " getLeft():" + btn.getLeft() + 
                            " getRight():" + btn.getRight() + 
                            " getTop():"+btn.getTop() + 
                            " getBottom():" + btn.getBottom() +
                            " getX():" + btn.getX() + 
                            " getY():" + btn.getY());
                    
                    // 设置标志
                    hasMeasured = true;
                }
                
                return true;
            }
        });
get view info