`

Android学习中关于WindowManager的讲解(转)

 
阅读更多

     我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成。所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操作在Activity里面实现,或者是一个Dialog或者Toast。这种方式固然简单,但是在有些情况下,我们要求的只是简单的显示,用Activity显然是多余,这个时候,我们如何处理呢?

 

原来,整个Android的窗口机制是基于一个叫做 WindowManager,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略我们以前的Activity或者Dialog之类的东东。其实我们的Activity或者Diolog底层的实现也是通过WindowManager,这个 WindowManager是全局的,整个系统就是这个唯一的东东。它是显示View的最底层了。

 

 

写一个简单的代码:

 WindowManager mWm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
        Button view = new Button(this);
        view.setText("window manager test!");
        WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(); 
        mWm.addView(view, mParams);

 

 

一般在刚开始开发android时,会犯一个错误,即在View的构造函数中获取getWidth()和getHeight(),当一个view对象创建时,android并不知道其大小,所以getWidth()和getHeight()返回的结果是0,真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。 width = activity.getWindowManager().getDefaultDisplay().getWidth(); height = activity.getWindowManager().getDefaultDisplay().getHeight();

 

分享到:
评论

相关推荐

    Android悬浮窗实现 使用WindowManager Demo

    本教程将深入讲解如何使用`WindowManager`服务来创建和管理Android悬浮窗,并通过一个简单的Demo——WindowManagerDemo来展示其实现过程。 首先,我们要理解`WindowManager`是Android系统提供的一个接口,它允许...

    android浮动窗口实现级点击消失例子

    在Android开发中,浮动窗口(通常称为悬浮窗或者小部件)是一种常见的功能,它可以在主屏幕或其他应用之上显示内容,为用户提供便捷的操作或...通过学习和运行这个例子,你将更深入地理解Android中浮动窗口的实现方式。

    windowmanager对话框

    本文将详细讲解如何使用WindowManager创建对话框以及在Android 6.0及更高版本中进行权限判断。 首先,让我们理解WindowManager的基本概念。WindowManager是Android系统的系统服务之一,它提供了添加、删除和更新...

    简单模仿360悬浮球 手动拖动悬浮窗效果DEMO WindowManager Demo

    在Android开发中,实现类似360悬浮球的效果是一项常见的需求,这主要涉及到对`WindowManager`类的使用,以及自定义View的交互处理。在这个DEMO中,开发者创建了一个可手动拖动的悬浮窗,其中视图是一个`TextView`,...

    仿360悬浮窗,WindowManager的使用

    首先,我们要了解`WindowManager`是Android系统中的一个接口,它用于管理系统的窗口。通过`WindowManager`,我们可以添加、删除或更新窗口,实现自定义视图的显示。在实际应用中,悬浮窗通常会用到`TYPE_PHONE`或者`...

    android伸缩式悬浮窗

    首先,我们要理解`WindowManager`在Android系统中的角色。`WindowManager`是Android系统提供的一个接口,用于管理应用程序窗口。它允许我们将视图(View)添加到窗口层级结构中,这些视图可以作为浮动窗口显示在应用...

    android 系统移植讲解

    Android系统的用户界面,即UI框架,包括SurfaceFlinger、WindowManager等服务,它们负责图形渲染和窗口管理。这部分移植需要确保UI能正常工作在目标硬件上,并且性能良好。 最后是应用程序的移植。Android应用通常...

    android在dialog中显示二维码

    本文将深入讲解如何在Android的Dialog中生成并显示二维码,以及如何处理点击Dialog外部以关闭Dialog的事件。 首先,我们需要了解二维码生成的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储比...

    Android中Window的管理深入讲解

    Android 中的 Window 管理是 Android 开发中非常重要的一个topic,_WindowManager 是 Android 中对 Window 的管理的核心,通过本文,我们将深入讲解 Android 中 Window 的管理机制。 一、理解 Android 中的 Window ...

    Android项目仿360 浮动小插件效果.rar

    在Android开发中,实现类似360安全卫士的...总之,这个压缩包中的项目将帮助开发者理解如何在Android中实现类似360安全卫士的浮动小插件效果,通过学习和实践,开发者可以创建自己的个性化悬浮窗应用,提升用户体验。

    android实现悬浮窗功能,无需权限

    本文将详细讲解如何在Android系统4.4(API Level 19)及以上版本实现这样的功能,主要涉及的技术点是使用`TYPE_TOAST`窗口类型。 首先,我们需要了解Android中的窗口类型。在Android中,每个应用都运行在一个独立的...

    王家林android

    9. **Android WindowManager 架构与设计解析** (AF109) 这门课程涉及窗口管理器的设计和实现,对于理解屏幕布局和窗口堆叠至关重要。 10. **Application Launching & Launcher Design** (AF1010) 学习应用启动...

    安卓悬浮窗相关-Android视频浮动窗口源码.rar

    由于描述中提到源码可能需要自行调试才能运行,我们将探讨一些关于Android悬浮窗开发的基础知识以及可能遇到的问题。 1. **Android悬浮窗(Floating Window)**: - 在Android中,悬浮窗通常通过实现`SYSTEM_ALERT...

    android桌面悬浮按钮

    在Android开发中,桌面悬浮按钮(也称为悬浮窗或系统托盘小部件)...通过对`FloatsWindow`压缩包中的代码进行学习和理解,开发者可以掌握Android悬浮窗的实现原理,并运用到自己的项目中,为用户提供更丰富的交互体验。

    Android-Android悬浮球-一个服务开启悬浮球任何界面都可以使用

    这种服务基于`android.app.Service`,并利用`WindowManager`接口将视图添加到系统的窗口管理器中,使其在屏幕的任意位置浮动。下面我们将详细讲解实现这个功能的关键步骤: 1. **创建悬浮服务类**: 首先,我们...

    Android代码-悬浮窗口和半透明实现效果.rar

    在Android中,实现悬浮窗口主要通过`WindowManager`服务和`LayoutParams`类。`WindowManager`接口允许开发者添加、移除或更新视图到系统窗口层次结构。`LayoutParams`则用来设置窗口的布局参数,如位置、大小、类型...

    Android应用源码之android 悬浮窗.zip

    本篇将详细讲解Android悬浮窗的相关知识点,以及如何通过提供的源码进行学习和实践。 1. **悬浮窗的基本概念** - **SYSTEM_ALERT_WINDOW** 权限:在Android 6.0(API 23)及以上版本,创建悬浮窗需要申请`...

    Android悬浮窗--获取内存

    `WindowManager`是Android系统提供的接口,可以用来添加、移除或者更新显示在窗口管理器中的视图。以下是一个简单的悬浮窗创建步骤: 1. 在AndroidManifest.xml中声明所需的权限: ```xml <uses-permission ...

    Android仿QQ悬浮_火箭发射内存计算

    项目中可能详细讲解了如何结合Android的内存管理机制,以及如何利用编程技巧,实现类似QQ悬浮窗的高效内存计算和管理。 总之,“Android仿QQ悬浮_火箭发射内存计算”是一个深入探讨Android悬浮窗实现和内存优化的...

Global site tag (gtag.js) - Google Analytics