活动窗口(Active),焦点窗口(Focus)和前景窗口(Foreground)之间的关系
2008-12-25 18:24
做UI的,我想势必会遇见这些问题,之前由于对这3种状况的窗口多少会有误解和混淆,正好现在抽空找了一下文章,整理了一下,做个笔记吧。
参考文章“Linux焦点模型分析”
URL:http://www.ibm.com/developerworks/cn/linux/l-cn-focus/index.html
(记住这篇文章是描述Linux焦点模型的,原本和Windows没啥关系,其实算是仇家,只是其中有一段是描述Windows焦点模型的,所以偷过来用一下,哈哈,窃书不算偷啥,所以请看文章的“Linux 与 Windows 焦点系统”这段就行了,其他可以略过)
下面是整理的内容和笔记:
任何一个时候,我们的Windows桌面上总有一个最前台的窗口,其实说简单的,就是标题栏变成深蓝色的那个窗口,仅此一个,这个窗口就是前景窗口(Foreground Window),其他窗口就是后台窗口(Background Window)。那创建前景窗口的线程就是前景线程(Foreground Thread),这个线程并不一定就是应用程序的主线程。
线程内部会维护当前自己的活动窗口(Active Window)和焦点窗口(Focus Window), 焦点窗口其实只是窗口的一个属性,其实就是“焦点状态”是窗口的一个属性,而焦点窗口的顶层窗口就是活动窗口,举个例子:一个对话框中有一个按钮,当按钮 获得焦点的时候,那此按钮就是焦点窗口,则包含此按钮的对话框就是活动窗口,若出现窗口嵌套的情况,则最根的那个窗口才是活动窗口。
上面2段已经分别描述了前景窗口,活动窗口和焦点窗口的一些情况,可是前景窗口和活动窗口又是什么区别呢?
焦 点窗口只是一个局部的概念,并不是所有的焦点窗口都可以获得键盘事件。只有前景线程的焦点窗口才能从系统队列中得到键盘事件,而前景线程中的活动窗口是前 景窗口。在任何时刻系统中都只可能有一个被激活的窗口,这就是前景窗口。这也就回答了上一节中的问题:与系统队列相连接的线程就是前景线程,而那个可以得 到键盘事件的窗口就是前景线程的焦点窗口。(以上文字引自开头的文章)
相信仔细理解一下这些描述,应该能对你有所帮助了。
分享到:
相关推荐
【Android与Linux底层通信机制实现】是Android系统开发中的核心环节,它涉及到Java层与JNI层的交互以及如何调用Linux底层驱动。Android应用程序主要由Java编写,运行在Dalvik虚拟机上,但为了实现与硬件设备的直接...
2. Android操作系统基础(Android 1/2):包括Android框架整合概述、应用与框架编程、内核与用户空间设备驱动程序的差异、本地共享库、Android NDK、Java本地接口、Android与Linux的设备控制流程、框架与硬件服务等...
Android SDK for Linux是Android开发的重要工具集,专为在Linux操作系统上进行Android应用程序开发而设计。这个SDK(Software Development Kit)包含了开发者构建、调试和发布Android应用所需的所有组件。以下是一些...
Android操作系统是基于Linux内核构建的,这意味着Android系统的核心是Linux,但在此基础上添加了自己的用户空间组件和库。Android使用内核来提供硬件抽象层,使得应用程序可以运行在不同的硬件平台上,而无需关心...
Android系统 = Linux内核 + Android运行时。 Android系统使用的Linux内核包含了一些专用驱动,例如Logger、Binder、Ashmem、Wakelock、Low-Memory Killer和Alarm等,这些Android专用驱动构成了Android运行时的基石。...
1. **未使用X窗口系统**:Android系统并未采用标准Linux中的X窗口系统。 2. **使用Bionic Libc替代glibc**:Android使用了专为其设计的Bionic Libc库,而不是标准Linux中的glibc。 3. **包含Android专用驱动程序**:...
基于Android设备的Kali Linux渗透测试教程基于Android设备的Kali Linux渗透测试教程基于Android设备的Kali Linux渗透测试教程
本主题主要围绕Goodix GT9XX 1.8版本的驱动程序,探讨其在Android和Linux操作系统中的应用。 【描述】"Goodix GT9XX 1.8针对Android或Linux操作系统的驱动" Goodix GT9XX 1.8驱动程序专为运行Android和Linux操作...
对于Linux用户来说,虽然操作系统选择相对小众,但Android Studio同样提供了全面的支持。在本文中,我们将深入探讨"android-studio-ide-141.1890965-linux.zip"这个压缩包,了解如何在Linux环境下安装、配置及高效...
总结,"android 刷系统 必备工具 fastboot linux 版"是Android爱好者和开发者进行设备固件更新的重要工具。理解fastboot的工作原理和正确使用方法,可以有效地进行系统升级和故障修复。但务必谨慎操作,遵循安全指南...
在内容上,《Android系统源代码情景分析(含CD光盘1张)》结合使用情景,全面、深入、细致地分析了Android系统的源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层...
"Linux 64位 Android-SDK_r13-linux_x86" 这个标题指的是一款专为64位Linux系统设计的Android软件开发工具包(Android Software Development Kit,简称Android SDK)。这里的"r13"表示这是Android SDK的第13个版本,...
Android系统架构是其高效运行的核心基础,由四层组成,分别是Linux内核、核心类库(含Android运行时环境)、应用程序框架和应用程序。这一架构设计旨在提供稳定的性能和强大的功能,同时也方便开发者进行应用开发。 ...
教程名称: Android开发入门资料之基础宝典【】Android中文帮助文档【】Android新手入门 FAQ【】Android系统原理与开发要点详解【技术文档】【】android系统简介【】Linux开发Android系统基础知识大汇总【】...
ndroid系统源代码情景分析的评论 ...在国内知名IT技术社区CSDN上发表了数十篇高质量的Android系统原创性文章,并且开设博客专栏--《老罗的Android之旅》,积极与网友互动,深受大家喜爱,访问量一直居于前茅。
[14本经典Android开发教程]-5-linux Android基础知识总结 ------------------------------------------------------- linux ,Android基础知识总结 1. Android编译系统分析 2. 文件系统分析 3. 制作交叉工具链 4. ...
在Android平台上,浮动窗口(通常称为悬浮窗或小窗口)是一种可以独立于应用程序主界面,在屏幕上方自由移动和缩放的UI元素。这种技术在许多应用中被广泛使用,例如浮动便签、屏幕录制工具或者多任务管理器。在本篇...
《Android点餐系统项目》是一门深度探讨如何在Android平台上构建无线点餐系统的视频教程,旨在教授学员如何利用Android技术实现一个完整的点餐系统,包括客户端和服务端的开发。这门课程涵盖了移动应用开发的多个...
Android是基于Linux内核的开源操作系统,被广泛应用于智能手机和平板电脑等移动设备上。在介绍Android的基础知识时,首先需要了解其系统架构。Android采用了分层的设计,从上到下依次分为应用程序层、应用程序框架层...