zoukankan      html  css  js  c++  java
  • 获取view的位置

    原来的网址:

    http://androidbin.iteye.com/blog/1633966

    我们重点在获取view的y坐标,你懂的...

    依次介绍以下四个方法:

    1.getLocationInWindow

    Java代码  收藏代码
    1. int[] position = new int[2];  
    2. textview.getLocationInWindow(position);  
    3. System.out.println("getLocationInWindow:" + position[0] + "," + position[1]);  

     这个方法是将view的左上角坐标存入数组中.此坐标是相对当前activity而言.

    若是普通activity,则y坐标为可见的状态栏高度+可见的标题栏高度+view左上角到标题栏底部的距离.

    可见的意思是:在隐藏了状态栏/标题栏的情况下,它们的高度以0计算.

    若是对话框式的activity,则y坐标为可见的标题栏高度+view到标题栏底部的距离.

    此时是无视状态栏的有无的.

    2.getLocationOnScreen

    Java代码  收藏代码
    1. int[] position = new int[2];  
    2. textview.getLocationOnScreen(position);  
    3. System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]);  

     这个方法跟上面的差不多,也是将view的左上角坐标存入数组中.但此坐标是相对整个屏幕而言.

    y坐标为view左上角到屏幕顶部的距离.

    3.getGlobalVisibleRect

    Java代码  收藏代码
    1. Rect viewRect = new Rect();  
    2. textview.getGlobalVisibleRect(viewRect);  
    3. System.out.println(viewRect);  

     这个方法是构建一个Rect用来"套"这个view.此Rect的坐标是相对当前activity而言.

    若是普通activity,则Rect的top为可见的状态栏高度+可见的标题栏高度+Rect左上角到标题栏底部的距离.

    若是对话框式的activity,则y坐标为Rect的top为可见的标题栏高度+Rect左上角到标题栏底部的距离.

    此时是无视状态栏的有无的.

    4.getLocalVisibleRect

    Java代码  收藏代码
    1. Rect globeRect = new Rect();  
    2. button.getLocalVisibleRect(globeRect);  

    这个方法获得的Rect的top和left都是0,也就是说,仅仅能通过这个Rect得到View的宽度和高度....

    注意:

    以上方法在OnCreate方法中调用,都会返回0,这是因为View还未加载完毕.

    建议在onWindowFocusChanged方法中进行获取,有些情况下onWindowFocusChanged不好用的时候(比如ActivityGroup),可以这样写:

    Java代码  收藏代码
    1. mTextView.post(new Runnable() {  
    2.     @Override  
    3.     public void run() {  
    4.         Rect viewRect = new Rect();  
    5.         mTextView.getGlobalVisibleRect(viewRect);  
    6.         mTreeScrollView.setRect(viewRect);  
    7.     }  
    8. });  

     这样在View加载完毕之后会执行获取位置的方法.

  • 相关阅读:
    波段是金牢记六大诀窍
    zk kafka mariadb scala flink integration
    Oracle 体系结构详解
    图解 Database Buffer Cache 内部原理(二)
    SQL Server 字符集介绍及修改方法演示
    SQL Server 2012 备份与还原详解
    SQL Server 2012 查询数据库中所有表的名称和行数
    SQL Server 2012 查询数据库中表格主键信息
    SQL Server 2012 查询数据库中所有表的索引信息
    图解 Database Buffer Cache 内部原理(一)
  • 原文地址:https://www.cnblogs.com/changzheng/p/3909108.html
Copyright © 2011-2022 走看看