我们重点在获取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加载完毕之后会执行获取位置的方法.
分享到:
相关推荐
本文将以“HelloActivity”为例,详细剖析Android应用程序的组成及其内部结构,帮助读者深入掌握Android应用的构建原理。 #### 二、HelloActivity概述 **HelloActivity** 是一个经典的入门级示例程序,旨在展示...
在Android开发中,获取系统所有应用程序列表并实现点击启动应用是一项常见的需求,这通常涉及到对Android系统的应用管理和Intent机制的理解。下面将详细讲解这个过程。 首先,我们需要理解Android权限。在...
"og日志"通常指的是Android中的`logcat`日志,它记录了系统和应用程序的各类运行信息。本篇文章将详细讲解如何在Android程序中获取和使用`logcat`日志。 1. **理解logcat** `logcat`是Android系统提供的一个命令行...
在Android应用程序开发中,添加广告是常见的盈利策略,可以为开发者带来额外的收入。本示例将详细讲解如何在Android应用中集成广告,主要涉及以下几个关键步骤和知识点: 1. **选择广告网络**:首先,你需要选择一...
MVC是一种软件设计模式,用于分离应用程序的数据、业务逻辑和用户界面。在Android开发中,Model代表数据模型,负责存储和处理数据;View是用户界面,负责显示数据;Controller作为两者之间的桥梁,处理用户交互并...
《Android应用程序开发与典型案例》1-12章涵盖了Android应用开发的基础到进阶知识,是学习Android编程的重要参考资料。本书由华清出版社出版,旨在帮助读者深入理解和掌握Android平台的开发技术。 首先,第一章通常...
本文主要探讨了如何利用Intent在Android系统中获取并操作其他应用程序的信息。以下是对这些方法的详细解释: 1. 卸载应用程序 使用Intent ACTION_DELETE可以实现卸载已安装的应用程序。首先,构建一个Uri对象,其...
在Android应用开发中,处理触摸事件(touch event)是至关重要的,因为它允许用户与界面进行交互。本篇文章将深入探讨如何判断一个触摸事件点是否在指定的View范围内,以及涉及的相关事件响应和View属性操作。 首先...
本压缩包包含的7个经典Android应用程序实例,涵盖了Android开发中的多种常见功能和应用场景,是学习和进阶的宝贵资源。 1. **天气应用**:这是一个展示如何获取并显示天气信息的应用。它涉及到网络请求(如使用...
这个压缩包包含的"7个代表性的Android应用程序完整源代码"为开发者提供了一次难得的学习机会,可以从实际项目中学习到各种实用技巧和最佳实践。以下是这些源代码可能涵盖的一些关键知识点: 1. **用户界面设计**:...
在Android应用程序开发中,了解Android生命周期至关重要。Android应用中的四大组件——活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)各自有不同的生命周期...
在Android开发中,获取手机中所有已安装应用的信息是一项常见的需求。这可以帮助我们构建各种功能,比如应用管理器、应用推荐...通过学习和理解这个项目,你将更深入地掌握Android应用开发中的数据获取和UI展示技巧。
在这个"一个android小程序,前台获取,传到后台"的主题中,我们将深入探讨Android UI的CommonWidget设计,以及如何在前端获取数据并传递到后台。 首先,Android UI的构建基于View体系,CommonWidget可能包括自定义...
在Android应用程序中,读写txt文本文件是常见的需求,特别是在数据持久化或用户交互时。本文将详细讲解如何使用`context.openFileInput()`和`context.openFileOutput()`这两个方法来实现这一功能。这两个方法属于`...
在Android应用开发中,从数据库获取数据并动态地展示在APP上是常见的需求。这个过程涉及到Android的SQLite数据库管理系统、Content Provider、CursorAdapter以及UI组件的交互。下面将详细讲解这些知识点。 首先,...
Android应用程序框架是Android系统的核心组成部分,它为开发者提供了一个结构化的开发环境,使得开发者能够创建高效、可扩展的应用程序。框架定义了一系列接口和类,这些接口和类是开发者与Android系统的各个层次...
在Android应用开发中,Eclipse是一个广泛使用的集成开发环境(IDE),特别适合Java开发者构建Android应用程序。本程序的标题“Eclipse编写的Android获取输入框内容,并且改变标题的程序”表明它涉及到两个主要功能:...
Android提供了`PackageManager`类,用于管理设备上的应用程序。你可以通过以下代码获取所有已安装的应用: ```java PackageManager packageManager = getPackageManager(); List<ApplicationInfo> installedApps = ...
在Android应用程序开发中,源代码是开发者的心血结晶,它揭示了应用的工作原理和实现细节。密西西比河谷州立大学提供的这个"Android应用程序开发源代码"资源,无疑为学习者提供了一个宝贵的实践平台,能够加深对...