`
xubingok
  • 浏览: 129351 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android应用程序中获取view的位置

 
阅读更多

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

依次介绍以下四个方法:

 

1.getLocationInWindow

 

                int[] position = new int[2];
                textview.getLocationInWindow(position);
                System.out.println("getLocationInWindow:" + position[0] + "," + position[1]);

 

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

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

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

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

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

 

2.getLocationOnScreen

 

                int[] position = new int[2];
                textview.getLocationOnScreen(position);
                System.out.println("getLocationOnScreen:" + position[0] + "," + position[1]);

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

 

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

 

 

3.getGlobalVisibleRect

 

                Rect viewRect = new Rect();
                textview.getGlobalVisibleRect(viewRect);
                System.out.println(viewRect);

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

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

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

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

 

4.getLocalVisibleRect

 

                Rect globeRect = new Rect();
                button.getLocalVisibleRect(globeRect);

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

 

 

注意:

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

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

            mTextView.post(new Runnable() {
                @Override
                public void run() {
                    Rect viewRect = new Rect();
                    mTextView.getGlobalVisibleRect(viewRect);
                    mTreeScrollView.setRect(viewRect);
                }
            });
 这样在View加载完毕之后会执行获取位置的方法.

 

1
3
分享到:
评论

相关推荐

    Android应用程序窗口(Activity)的窗口对象(Window)

    在本文中,我们就将详细分析Android应用程序窗口对象的创建过程。为了方便接下来描述类型为PhoneWindow的应用程序窗口的创建过程,我们将这两个图拿过来,如以下的图1和图2所示:图1Activity和Win

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 【项目介绍】 该资源...

    androidkit(android应用开发工具包)

    androidkit是一个android应用开发工具包,包含SQLiteOpenHelper的简单实现类、获取指定URL中返回的内容的String对象、View控件的截图、获取 本程序的图标、名字、版本、包名等信息、再按一次退出、抽象类,继承并...

    Android代码-Gerrit客户端应用程序

    A Gerrit client application for Android Features View open, merged or abandoned changes. Search for changes. Review and comment on changes. Edit files and publish new revisions Compare textually and...

    Android高手进阶教程与Android基础教程

    Android高手进阶教程之----Android 中自定义View的应用.doc Android高手进阶教程之----Android 中自定义属性(attr.xml,TypedArray)的使用! .doc Android高手进阶教程之----Android中万能的BaseAdapter(Spinner,...

    android获取手指触摸位置的方法

    该方法在View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件。 其原型是: public boolean onTouchEvent(MotionEvent event) 参数event:参数event为手机屏幕触摸...

    Android获取应用程序大小和缓存的实例代码

    info ... import android.content.Intent; import android.graphics.drawable.Drawable; //Model类 ,用来存储应用程序信息 ... //启动应用程序的Intent ,一般是Action为Main和Category为Lancher的Activity

    精通ANDROID 3(中文版)1/2

    2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 ...

    android开发入门与实战(下)

    第6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序...

    dropmaps:Drop应用程序是一个Android应用程序,其功能是找出用户的当前位置,并可以移动标记以获取标记位置的名称和地址。 而且,在应用程序中,您可以搜索要查找的位置的名称,然后将标记指向您要查找的位置

    由于我的API密钥的安全性和大小限制,因此我用一个文本替换了我的API密钥,当您构建此应用程序时,该文本肯定会失败。 请把您的API密钥放在gradle.properties和值-> google_maps_api.xml中。 或者,您可以在名为“ ...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    android开发秘籍

    2.1.4 重命名应用程序中的部分文件 23 2.2 activity 的生命周期 23 2.2.1 秘诀2:使用其他的生命周期方法 24 2.2.2 秘诀3:强制执行单任务模式 26 2.2.3 秘诀4:强制屏幕方向 26 2.2.4 秘诀5:保存和恢复activity...

    android开发入门与实战(上)

    第6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序...

    Android UI组件实例集合

    为Android应用开发提供一个轻量级开发框架,让开发者可以基于HTML/CSS/JAVASCRIPT快速开发android应用界面,同时也能够利用mobilelite调用android后台的服务。 18、Android瀑布流实例 android_waterfall 实现了类似...

    《Google Android开发入门与实战》.pdf

    第6章 磨刀不误砍柴工——android应用程序结构介绍 57 6.1 android体系结构介绍 57 6.1.1 应用程序(application) 57 6.1.2 应用程序框架(application framework) 58 6.1.3 库(libraries)和运行环境...

    Google.Android开发入门与实战

    第6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序...

    Android应用开发I实验指导书.doc

    《Android应用开发I》实验指导书 计算机科学及技术系 目 录 实验一 :第一个应用程序 3 实验二 :基本控件 1 实验三 :高级控件 4 实验四 :菜单和对话框 7 实验五 :数据存储 8 实验六 :后台处理及获取网络数据 9 ...

    精通Android 3 (中文版)2/2

    2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 ...

    MVP-architecture-android:适用于Android应用程序开发的MVP架构的详细说明

    该演示基于Android MVP体系结构以及如何在出色的应用程序中正确使用Android MVP。 您可以从此找到分步指南 模型 模型管理数据组件提供诸如获取,存储,排序和公开数据之类的功能。 看法 查看管理用户界面操作。 ...

Global site tag (gtag.js) - Google Analytics