美文网首页
Android 开发艺术探索笔记(十三) 之 Window 和

Android 开发艺术探索笔记(十三) 之 Window 和

作者: innovatorCL | 来源:发表于2018-04-02 23:38 被阅读9次

一、简介

Window 是一个抽象类,它的具体实现是 PhoneWindow 类。WindowManager 是外界访问 Window 的入口,Window 的具体实现是在 WindowManagerService(系统服务) 中,WindowManager 和 WindowManagerService 的交互是一个 IPC 过程。

Android 所有的视图都是通过 Window 呈现的,包括 Activity、Dialog、Toast,它们的视图实际上都是附加在 Window 上,所以 Window 实际是 View 的直接管理者。

二、简单添加一个 Window

show my code

mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
mFloatingButton = new Button(this);

mFloatingButton.setText("click me");

mLayoutParams = new WindowManager.LayoutParams(
              WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, 1, 0,
              PixelFormat.TRANSPARENT);
              
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL //当前Window区域以外的单击事件传递给底层Window,区域以内的交给自己处理
              | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE  //不需要获取焦点,不接收各种输入事件
              | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;  // 显示在锁屏界面上

      

mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;

mLayoutParams.gravity = Gravity.LEFT | Gravity.TOP;
mLayoutParams.x = 100;
mLayoutParams.y = 300;
mFloatingButton.setOnTouchListener(this);
//添加 View
mWindowManager.addView(mFloatingButton, mLayoutParams);

下面介绍一下 WindowManager.LayoutParamsFlagType :

Flag 控制 Window 的显示特性

  • FLAG_NOT_TOUCH_MODAL

    表示系统将当前 Window 区域以外的单击事件传递给底层 Window,当前 Window 以内的单击事件自己处理。

  • FLAG_NOT_FOCUSABLE

    表示 Window 不需要获取焦点,也不接收任何输入事件,会启用上面的 Flag,最终事件会直接传递给下层具有焦点的 Window。

  • FLAG_SHOW_WHEN_LOCK

    开启此模式可以让 Window 显示在锁屏界面上。

Type 参数表示 Window 的类型

  • 应用 Window

    对应着一个 Activity

  • 子 Window

    不能单独存在,需要附属到特定的父 Window。如 Dialog

  • 系统 Window

    需要声明权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 才能创建,如 Toast,系统状态栏

相关文章

  • Android 开发艺术探索笔记(十三) 之 Window 和

    一、简介 Window 是一个抽象类,它的具体实现是 PhoneWindow 类。WindowManager 是外...

  • Android开发艺术探索 第15章 Android性能优化 读

    正式开始前,推荐一下Android开发艺术探索的其他笔记 Android开发艺术探索 读书笔记目录下面正文开始。 ...

  • 深入学习Activity的生命周期和启动模式

    《Android开发艺术探索》读书笔记之Activity的生命周期和启动模式 目录: Activity的生命周期典...

  • IPC笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • View事件体系笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • Activity笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • 常见问题和性能优化

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • 常用功能

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • View的工作原理笔记

    一、说明 笔记主要是《Android开发艺术探索》的阅读笔记和自己的理解,笔记中部分内容引自《Android...

  • 安卓艺术开发与探索第一章读书笔记

    《Android开发艺术探索》第一章笔记 最近把《Android开发艺术探索》这本书深读了一遍,看这本书,真的收获...

网友评论

      本文标题:Android 开发艺术探索笔记(十三) 之 Window 和

      本文链接:https://www.haomeiwen.com/subject/nyelcftx.html