`
java-admin
  • 浏览: 1382316 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

Android平台WindowManager运用

阅读更多

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();

 

http://blog.163.com/lyd-dada/blog/static/45573809201052225236121/

分享到:
评论

相关推荐

    android surfaceview 悬浮窗圆角 windowmanager

    总的来说,创建一个带有圆角的`SurfaceView`悬浮窗涉及到对Android视图层次结构的理解、`SurfaceView`的特性利用、`WindowManager`的运用以及自定义`View`的绘制技巧。这个过程需要开发者具备扎实的Android基础知识...

    Android悬浮框权限判断WindowManager

    `WindowManager`是Android SDK中的一个关键组件,它负责管理Android设备上的窗口。开发者可以利用`WindowManager`来添加、更新或删除窗口,包括创建悬浮框。以下是对`WindowManager`及悬浮框权限的详细说明: 1. **...

    windowmanager

    在Android系统中,WindowManager是负责管理窗口的重要组件,它允许开发者将视图添加到屏幕上的窗口层次结构中。...在实际开发中,合理运用Window和WindowManager,可以实现各种复杂的界面效果,提升用户体验。

    安卓Android源码——android 悬浮窗.rar

    在Android中,创建悬浮窗主要依赖于`WindowManager`服务和`LayoutParams`参数。首先,你需要在AndroidManifest.xml文件中为你的应用申请悬浮窗权限: ```xml <uses-permission android:name="android.permission....

    Xamarin.Android悬浮框

    首先,悬浮框在Android中通常是通过`WindowManager`服务和自定义布局来创建的。在Xamarin.Android中,你需要先获取到`WindowManager`的实例,这可以通过`Context.GetSystemService`方法并传入`WindowService`来实现...

    Android 高仿微信文章悬浮窗

    总的来说,实现“Android高仿微信文章悬浮窗”需要熟练掌握Activity、Service和BroadcastReceiver的用法,理解Android的窗口管理机制,并能够灵活运用各种通信方式来协调组件之间的交互。这不仅考验开发者对Android...

    Android仿苹果siri 浮动控件

    首先,`WindowManager`是Android系统提供的一个接口,它允许开发者动态地在窗口管理器中添加、删除和更新视图。这使得我们可以独立于任何特定Activity或Service,创建全局可见的悬浮视图。要使用`WindowManager`,...

    Android高级应用源码-悬浮窗口和半透明实现效果.zip

    "Android高级应用源码-悬浮窗口和半透明实现效果.zip"这个压缩包文件提供了关于如何在Android平台上创建浮动窗口(Floating Window)和半透明效果的示例代码。让我们详细探讨这两个关键知识点。 **1. 悬浮窗口...

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

    总之,Android的悬浮窗口和半透明效果为开发者提供了丰富的自定义UI的可能性,通过巧妙运用这些技术,可以创建出独特且吸引用户的交互界面。在实际项目中,需要注意遵循Android的权限管理和用户隐私政策,以确保应用...

    Android代码-一个轻量级的手绘板,加入了一点截图功能

    WindowManager的简单运用 一些其它技巧或细节的处理的与运用 GIF 关于开发者 小鄧子 - Hi4Joker@gmail.com 小鄧子的简书 小鄧子的慕课网专题 参考 CodePath Android Cliffnotes - Codepath Making ...

    android dialog与popwindow之间的简单运用

    注意:PopupWindow组件的使用问题,PopupWindow是一个阻塞对话框,如果你直接在Activity创建的方法中显示它,则会报错:android.view.WindowManager$BadTokenException:Unable to add window -- token null is not ...

    Android-Android状态栏问题汇总

    可以使用`WindowManager.LayoutParams.FLAG_LAYOUT_IN_NAVIGATION_BAR`和`WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS`结合使用来实现。 5. **状态栏图标暗亮模式** Android Q引入了深色主题,开发者需要...

    Android 沉浸式几种实现方式

    在Android开发中,沉浸式...总的来说,实现Android沉浸式设计需要综合运用系统API、布局调整、颜色管理以及第三方库等技术,根据项目需求选择合适的实现方式,并注意适配各种设备和Android版本,以提供最佳用户体验。

    详解Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限

    总之,`SYSTEM_ALERT_WINDOW`权限在Android全局对话框的实现中起着至关重要的作用,但开发者也应灵活运用不同的策略来应对权限限制和设备差异。在处理这类问题时,不仅要有扎实的Android框架知识,还要对用户体验有...

    Android知识体系思维导图

    只有通过系统学习和实践,才能更好地利用Android平台提供的各种工具和API,设计和开发出稳定、高效、用户友好的应用程序。此外,为了有效地构建应用,还需要掌握AndroidManifest.xml中的各种配置,以及UI布局和组件...

    android桌面悬浮按钮

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

    Android窗口适配|windowFit.rar

    综上所述,Android窗口适配是一个多方面的问题,需要开发者根据具体需求灵活运用各种技术和属性。`FitsSystemWindows`、隐藏状态栏和导航栏、内容延伸等都是其中的关键点。理解并熟练掌握这些知识点,能够帮助开发者...

    免root实现截屏Android例子源码

    在Android平台上,截屏功能通常是系统级别的,一般用户可以通过电源键和音量键组合来触发。然而,对于开发者来说,有时候需要在应用内部实现免root的屏幕截图功能,例如用于测试、日志记录或者特定场景的需求。这个...

    Android状态栏着色代码

    在Android开发中,状态栏(StatusBar)是手机屏幕顶部显示时间、网络信号、电量等信息的区域。为了让应用界面更具整体感和沉浸式体验,开发者...理解并熟练运用这些技术,能够帮助开发者打造更加美观、统一的应用界面。

Global site tag (gtag.js) - Google Analytics