window z-order概念

window z-order 表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假想的轴定位的,
这个轴就是从屏幕向外伸展的Z轴。z-order最上面的窗口覆盖所有其它的窗口,z-order最底层的窗口被所有其他的窗口覆盖。
应用程序设置窗口在z-order的位置是通过把它放在一个给定的窗口的后面,或是放在窗口堆的顶部或底部。

Window:

在Activity里,Window 是一个抽象类,代表了一个矩形的不可见的容器,里面布局着若干个可视的区域(View).

从用户角度来看,Android是个多窗口的操作系统,不同尺寸的窗口区域根据尺寸,位置,z-order及是否透明等参数 叠加起来一起并最终呈现给用户。这些窗口既可以是来自一个应用,也可以来自与多个应用,这些窗口既可以显示在一个平面,也可以是不同的平面。
总而言之,窗口是有层次的显示区域,每个窗口在底层最终体现为一个个的矩形Buffer, 这些Buffer经过计算合成为一个新的Buffer,最终交付Display系统进行显示。

系统窗口(System Window): 系统设计的,不依附于任何应用的窗口,如下:
状态栏(Status Bar), 导航栏(Navigation Bar), 壁纸(Wallpaper), 来电显示窗口(Phone),
锁屏窗口(KeyGuard), 信息提示窗口(Toast), 音量调整窗口,鼠标光标等等。

子窗口(Sub Window):比如应用自定义的对话框,或者输入法窗口,子窗口必须依附于某个应用窗口(设置相同的token)。

surface:

在Android中,Window与Surface一一对应。 如果说Window关心的是层次和布局,是从设计者角度定义的类,Surface则从实现角度出发,是工程师关系和考虑的类。
Window的内容是变化 的,Surface需要有空间来记录每个时刻Window的内容。在Android的SurfaceFlinger实现里,通常一个Surface有两块 Buffer, 
一块用于绘画,一块用于显示,两个Buffer按照固定的频率进行交换,从而实现Window的动态刷新。

SurfaceView:

SurfaceView本身是一个View,符合一切View的特性,需要通过Canvas画布绘制。

SurfaceView拥有独立的Surface(绘图表面),即它不与其宿主窗口共享同一个Surface。
一般来说,每一个窗口在SurfaceFlinger服务中都对应有一个Layer,用来描述它的绘图表面。对于那些具有SurfaceView的窗口来说,
每一个SurfaceView在SurfaceFlinger服务中还对应有一个独立的Layer或者LayerBuffer,用来单独描述它的绘图表面,以区别于它的宿主窗口的绘图表面。
因此SurfaceView的UI就可以在一个独立的线程中进行绘制,可以不会占用主线程资源。

SurfaceView是用Zorder排序的,他默认在宿主Window的后面,SurfaceView通过在Window上面“挖洞”(设置透明区域)进行显示

Android Window/Window Z-Order/Surface/SurfaceView相关推荐

  1. Android窗口Window的创建(悬浮窗)

    创建悬浮窗以及基于无障碍服务的窗口 关于悬浮窗的创建 启动悬浮窗 关于前台服务 启动服务 无障碍窗口 知识点 参考链接 关于悬浮窗的创建 首先需要获取WindowManager WindowManag ...

  2. Android的Window类详解

    Android的Window类(一) Android的GUI层并不复杂.它的复杂度类似于WGUI这类基于布局和对话框的GUI,与MFC.Qt等大型框架没有可比性,甚至飞漫魏永明的MiniGUI都比它复 ...

  3. Android之Window与WindowManager

     Window表示一个窗口的概念,在日常开发中直接接触Window的机会并不多,但却会经常用到Window,activity.toast.dialog.PopupWindow.状态栏等都是Window ...

  4. 【错误记录】布局组件加载错误 ( Attempt to invoke virtual method ‘xxx$Callback android.view.Window.getCallback()‘ )

    文章目录 一.报错信息 二.解决方案 一.报错信息 使用环境 : Kotlin 编写的 Activity 使用了 kotlin-android-extensions 扩展插件 , 在 build.gr ...

  5. import android.view.window;,尝试在空对象引用上调用虚拟方法‘android.view.Window$回调...

    尝试在空对象引用上调用虚拟方法'android.view.Window$回调-android.view.Window.getCallback()' 当我SplashActivity打开LoginAct ...

  6. android 添加子view,Android基于Window.ID_ANDROID_CONTENT给定id添加子View

    Android基于Window.ID_ANDROID_CONTENT给定id添加子View 这一技术特点在一些视频播放器中比较有用. 例如代码: package zhangphil.demo; imp ...

  7. [转]Android 之 Window、WindowManager 与窗口管理

    这篇是对前两天研究的悬浮窗的内容的一个小小的资料整理吧.首先是转载一篇介绍Android窗口的内容,觉得写得不错:http://blog.csdn.net/xieqibao/article/detai ...

  8. Android 之 Window、WindowManager 与窗口管理

    其实在android中真正展示给用户的是window和view,activity在android中所其的作用主要是处理一些逻辑问题,比如生命周期的管理.建立窗口等.在android中,窗口的管理还是比 ...

  9. Android解析Window机制

    一.window介绍 什么是window 什么是view树?例如你在布局中给Activity设置了一个布局xml,那么最顶层的布局如LinearLayout就是view树的根,他包含的所有view就都 ...

  10. Android之window机制token验证

    文章已授权『郭霖』公众号发布 前言 很高兴遇见你~ 欢迎阅读我的文章 这篇文章讲解关于window token的问题,同时也是Context机制和Window机制这两篇文章的一个补充.如果你对Andr ...

最新文章

  1. 漫谈linux文件IO
  2. Google Glass是工具不是玩具
  3. 2009年计算机二级c语言考试真题,2009年3月全国计算机二级C语言考试真题.doc
  4. unity粒子系统_【笔记】关于unity的粒子系统和UI之间的位置冲突解决
  5. layui 给table里面的添加图标_layui中的table中toolbar自定义过程
  6. ES6减少魔法操作之Reflect
  7. Oracle PL/SQL基础知识
  8. “Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法...
  9. HTML+CSS制作3D步数统计界面
  10. 让2个并列的div根据内容自动保持同等高度js
  11. linux视频教程之vi编辑器
  12. Hibernate 入门简单教程
  13. 万能声卡驱动win10_主流最新驱动程序下载地址分享 和垃圾驱动下载软件说再见...
  14. pcm5102a解码芯片音质评测_聊一款售价两万九千元的国产解码器——声韵织女星AURALiC VEGA G1...
  15. 使用js获取input file的路径C:\fakepath\问题
  16. Flutter Text控件在不同手机上不居中的问题
  17. “龙书”作者Jeffery Ullman:相信你自己,自由地思考
  18. 街舞元年的角逐:“热血街舞团”和“这就是街舞”谁能胜出?
  19. 20189217 2018-2019-2 《密码与安全新技术专题》第11周作业
  20. python代码图片头像_python图像处理-个性化头像

热门文章

  1. wpsppt放映时间_利用WPS演示制作PPT计时器的两种方法
  2. Android请求麦克风权限+系统权限页面回调
  3. H.264/AVC简介
  4. 【日常小问题3】win10电脑忘记开机密码的解锁方法【转载】
  5. Win10安装乌班图18双系统
  6. php输出excel乱码,如何解决php导出excel乱码的问题
  7. win10商店下载位置_教你win10设置应用商店中应用默认安装位置教程
  8. C11 多线程初学1
  9. MATLAB数据拟合学习总结
  10. 微信小程序-wxParse插件的使用