`
xubingok
  • 浏览: 130153 次
  • 性别: 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 的应用程序结构分析:HelloActivity

    本文将以“HelloActivity”为例,详细剖析Android应用程序的组成及其内部结构,帮助读者深入掌握Android应用的构建原理。 #### 二、HelloActivity概述 **HelloActivity** 是一个经典的入门级示例程序,旨在展示...

    获取Android所有应用程序列表,点击某一项时可启动相应应用

    在Android开发中,获取系统所有应用程序列表并实现点击启动应用是一项常见的需求,这通常涉及到对Android系统的应用管理和Intent机制的理解。下面将详细讲解这个过程。 首先,我们需要理解Android权限。在...

    android 讲程序中获取og日志

    "og日志"通常指的是Android中的`logcat`日志,它记录了系统和应用程序的各类运行信息。本篇文章将详细讲解如何在Android程序中获取和使用`logcat`日志。 1. **理解logcat** `logcat`是Android系统提供的一个命令行...

    Android应用程序添加广告示例

    在Android应用程序开发中,添加广告是常见的盈利策略,可以为开发者带来额外的收入。本示例将详细讲解如何在Android应用中集成广告,主要涉及以下几个关键步骤和知识点: 1. **选择广告网络**:首先,你需要选择一...

    Android 获取应用列表

    MVC是一种软件设计模式,用于分离应用程序的数据、业务逻辑和用户界面。在Android开发中,Model代表数据模型,负责存储和处理数据;View是用户界面,负责显示数据;Controller作为两者之间的桥梁,处理用户交互并...

    《Android应用程序开发与典型案例》1-12章

    《Android应用程序开发与典型案例》1-12章涵盖了Android应用开发的基础到进阶知识,是学习Android编程的重要参考资料。本书由华清出版社出版,旨在帮助读者深入理解和掌握Android平台的开发技术。 首先,第一章通常...

    Android中使用Intent获取其他应用程序信息的方法介绍.pdf

    本文主要探讨了如何利用Intent在Android系统中获取并操作其他应用程序的信息。以下是对这些方法的详细解释: 1. 卸载应用程序 使用Intent ACTION_DELETE可以实现卸载已安装的应用程序。首先,构建一个Uri对象,其...

    Android判断touch事件点是否在view范围内的方法

    在Android应用开发中,处理触摸事件(touch event)是至关重要的,因为它允许用户与界面进行交互。本篇文章将深入探讨如何判断一个触摸事件点是否在指定的View范围内,以及涉及的相关事件响应和View属性操作。 首先...

    7个经典Android应用程序实例源代码

    本压缩包包含的7个经典Android应用程序实例,涵盖了Android开发中的多种常见功能和应用场景,是学习和进阶的宝贵资源。 1. **天气应用**:这是一个展示如何获取并显示天气信息的应用。它涉及到网络请求(如使用...

    7个代表性的Android应用程序完整源代码

    这个压缩包包含的"7个代表性的Android应用程序完整源代码"为开发者提供了一次难得的学习机会,可以从实际项目中学习到各种实用技巧和最佳实践。以下是这些源代码可能涵盖的一些关键知识点: 1. **用户界面设计**:...

    Android应用程序开发all-in-one

    在Android应用程序开发中,了解Android生命周期至关重要。Android应用中的四大组件——活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)各自有不同的生命周期...

    android 获取手机中所有安装程序的信息

    在Android开发中,获取手机中所有已安装应用的信息是一项常见的需求。这可以帮助我们构建各种功能,比如应用管理器、应用推荐...通过学习和理解这个项目,你将更深入地掌握Android应用开发中的数据获取和UI展示技巧。

    一个android小程序,前台获取,传到后台

    在这个"一个android小程序,前台获取,传到后台"的主题中,我们将深入探讨Android UI的CommonWidget设计,以及如何在前端获取数据并传递到后台。 首先,Android UI的构建基于View体系,CommonWidget可能包括自定义...

    Android应用程序中读写txt文本文件的基本方法讲解

    在Android应用程序中,读写txt文本文件是常见的需求,特别是在数据持久化或用户交互时。本文将详细讲解如何使用`context.openFileInput()`和`context.openFileOutput()`这两个方法来实现这一功能。这两个方法属于`...

    Android应用源码获取数据库数据并动态显示在APP

    在Android应用开发中,从数据库获取数据并动态地展示在APP上是常见的需求。这个过程涉及到Android的SQLite数据库管理系统、Content Provider、CursorAdapter以及UI组件的交互。下面将详细讲解这些知识点。 首先,...

    解析Android应用程序框架(共14张PPT).ppt

    Android应用程序框架是Android系统的核心组成部分,它为开发者提供了一个结构化的开发环境,使得开发者能够创建高效、可扩展的应用程序。框架定义了一系列接口和类,这些接口和类是开发者与Android系统的各个层次...

    Eclipse编写的Android获取输入框内容,并且改变标题的程序

    在Android应用开发中,Eclipse是一个广泛使用的集成开发环境(IDE),特别适合Java开发者构建Android应用程序。本程序的标题“Eclipse编写的Android获取输入框内容,并且改变标题的程序”表明它涉及到两个主要功能:...

    Android获取系统已安装应用开发

    Android提供了`PackageManager`类,用于管理设备上的应用程序。你可以通过以下代码获取所有已安装的应用: ```java PackageManager packageManager = getPackageManager(); List<ApplicationInfo> installedApps = ...

    Android应用程序开发源代码

    在Android应用程序开发中,源代码是开发者的心血结晶,它揭示了应用的工作原理和实现细节。密西西比河谷州立大学提供的这个"Android应用程序开发源代码"资源,无疑为学习者提供了一个宝贵的实践平台,能够加深对...

Global site tag (gtag.js) - Google Analytics