当前位置: 首页 > news >正文

Android Window、WindowManager

1.窗口Window

在Android中显示一个界面,首先想到的是Activity、Dialog或Toast。但是在有些情况下,比如悬浮球,用Activity会显然多余,这个时候可以直接使用窗口来实现。

Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,它们的视图实际上都是附加在Window上,因此Window是实例view的直接管理者,单击事件由Window传给DecorView,再由DecorView传给view,而且Activity的setContentView方法在底层也是通过Window来完成的。

Window是一个抽象类,它的具体实现是PhoneWindow。创建一个Window需要通过WindowManager来完成,WindowManager是外界访问Window的入口,WindowManager的具体实现位于WindowManagerService中,WindowManager和WindowManagerService的交互是一个IPC过程。

整个Android的窗口机制是基于WindowManager接口的,这个接口可以添加view到屏幕,也可以从屏幕删除view。它面向的对象一端是屏幕,另一端就是View,直接忽略Activity或Dialog(其实Activity和Dialog的底层实现也是通过WindowManager)。WindowManager是全局的,它是显示View的最底层了。因此使用WindowManager可以实现在桌面上可移动的悬浮窗,比如流量统计、桌面歌词等。

View是Ani中视图的呈现方式,但是view不能单独存在,它必须要附着在Window这个抽象概念上。每一个Window都对应着一个View和一个ViewRootImpl,Windo

http://www.lryc.cn/news/22139.html

相关文章:

  • 【一天一门编程语言】怎样设计一门编程语言?
  • 微服务保护 -- 初识 Sentinel(雪崩问题,快速入门Sentinel)
  • 软件测试面试问答
  • 【架构】架构师的核心能力-抽象能力
  • 前端一面常见react面试题(持续更新中)
  • 亥姆霍兹线圈测量系统
  • JavaScript 类型转换
  • Spring Batch 综合案例实战-项目准备
  • STM32CubeMX串口USART中断发送接收数据
  • JavaScript Web Workers使用流程
  • 数据结构与算法(五):优先队列
  • 二叉树的前序遍历-java两种方式-力扣144
  • 浅析 Redis 主从同步与故障转移原理
  • MyBatis学习笔记(七) —— 特殊SQL的执行
  • 计算机组成原理(1)--计算机系统概论
  • jdbc模板的基本使用
  • JPA 注解及主键生成策略使用指南
  • 【C语言刷题】找单身狗、模拟实现atoi
  • 前端必会面试题指南
  • C 语言—— 数组
  • Oracle-RAC集群主机重启问题分析
  • Python每日一练(20230227)
  • Scratch少儿编程案例-算法练习-存款收益计算
  • 【Linux驱动开发100问】Linux驱动开发工程师在面试中常被问到的问题汇总
  • 每日学术速递2.27
  • 【数据库系统概论】基础知识总结
  • 简单移动平均在量化中的应用(附Python实战代码)
  • ChatGPT提高你日常工作的五个特点,以及如何使用它来提高代码质量
  • spark datasourceV1和v2
  • 10种聚类算法的完整python操作示例