android的窗口机制分析------UI管理系统

Activity可以看做是整个android系统的人机接口,它提供了一个窗口来绘制UI,每个Activity在启动时,我们都需要给它设置一个Content view,作为Activity所呈现的UI内容,这个过程是通过setContentView()方法来实现的。

    众所周知,android系统中强化了view的概念,主要是体现在对view的管理上,Android中的view以2种形态存在,单一的View和多个View组成的ViewGroup。Content view是以ViewGroup的形式存在的,也就是说在一个Activity窗口中可以添加多个View,这样就实现了Android窗口系统的UI多样化。activity启动时给activity窗口设置的Content view 是从xml文件中解析出来的,那么android是怎么样对这个ContentView进行管理的呢,它的内部实现逻辑又是怎样的呢?

    在进行分析之前,首先给出一个Activity的window和view系统的层级关系,这个层级关系就是在Activity设置完ContentView之后的状况。    

    如下图。



下面来一一介绍各个层级的含义与作用

1.1  PhoneWindow

    PhoneWindow是Android中的最基本的窗口系统,每个Activity 均会创建一个PhoneWindow对象,是Activity和整个View系统交互的接口。


1.2  DecorView

    DecorView是当前Activity所有View的祖先,它并不会向用户呈现任何东西,它主要有如下几个功能,可能不全:

A.  Dispatch ViewRoot分发来的key、touch、trackball等外部事件;

B.  DecorView有一个直接的子View,我们称之为System Layout,这个View是从系统的Layout.xml中解析出的,它包含当前UI的风格,如是否带title、是否带process bar等。可以称这些属性为Window decorations。

C.  作为PhoneWindow与ViewRoot之间的桥梁,ViewRoot通过DecorView设置窗口属性。


1.3  System Layout

    目前android根据用户需求预设了几种UI 风格,通过PhoneWindow通过解析预置的layout.xml来获得包含有不同Window decorations的layout,我们称之为System Layout,我们将这个System Layout添加到DecorView中,目前android提供了8种System Layout,如下图。

    预设风格可以通过PhoneWindow方法requestFeature()来设置,需要注意的是这个方法需要在setContentView()方法调用之前调用。


1.4  Content Parent

    Content Parent这个ViewGroup对象才是真真正正的ContentView的parent,我们的ContentView终于找到了寄主,它其实对应的是System Layout中的id为”content”的一个FrameLayout。这个FrameLayout对象包括的才是我们的Activity的layout(每个System Layout都会有这么一个id为”content”的一个FrameLayout)。



1.5  Activity Layout

    这个ActivityLayout便是我们需要向窗口设置的ContentView,现在我们发现其实它的地位很低,同时这一部分才是和user交互的UI部分,其上的几层并不能响应并完成user输入所期望达到的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA版WMS仓储管理系统源码 物流仓库管理系统源码 开发语言 : JAVA 数据库 : MySQL 开发工具 : MyEclipse 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 源码介绍: 基于JAVA开发的物流仓库管理系统(支持自营和第三方),包含PDA端和WEB端。 WMS在经过多家公司上线运行后,为了降低物流仓储企业的信息化成本,针对有特殊信息化需求 的企业,提供高性价比的实施服务。 产品特点:1、适用范围:第三方物流仓储企业,自营仓储等。 2、技术特点:基于JAVA的WEB后台,基于ANDROID开发的PDA系统。 3、功能特点:涵盖订单管理系统(OMS),仓储管理系统(WMS),计费管理系统(BMS), 现场作业系统(RF),第三方接口模块 4、接口支持:已经对接:SAP ECC,SAP HANA 数据库,用友U8,百胜E3,UAS。 5、对接自主研发ERP管理系统  6、增加进销存模块  7、增加BOM 主要功能: 1、主要功能 计费配置、仓库配置、基础配置、计费管理、基础资料、仓库管理、月台管理、进货管理、出货 管理、退货管理、库内管理、盘点管理、库存查询、PDA功能、分析报表、分析图表、域验证。 2、主要流程 客户下单流程,收货流程,上架流程,移货作业、拣货流程:批量拣货,按单拣货、盘点流程、计费流程。 3、硬件对接 对接自主研发基于LORA物联网技术的电子货架标签模块,满足快速退货分拣,波次拣货,生产线电子流程卡。 安装说明: 1,开发环境: 开发工具:IDEA(强烈建议用IDEA,也可以Eclipse);ANDROID STUDIO   JDK1.8   Maven Mysql5.6以上(linux 注意设置大小写不敏感) 运行环境:CENTOS6.5以上或windows server 2008、tomcat7以上,JDK1.8, MYSQL5.7 2,按照 mvn 方式导入 3,数据库还原: 安装完数据库执行下 GRANT ALL PRIVILEGES ON *.* TO ’root’@’%’IDENTIFIED BY ’ 你的密码’ WITH GRANT OPTION; FLUSH PRIVILEGES; 步骤 1:还原数据库,2,修改 dbconfig.properties sql 导入方式建议,将 sql 文件粘贴至 查询执行窗口 执行 4,IDEA:tomcat7:tun 输入用户名和密码:admin llg123 5、主要技术   开发语言:JAVA。 6、技术架构 SpringMVC+Hibernat+Minidao(类Mybatis)+EasyuiUI库)+ Jquery + Boostrap +  Ehcache + Redis + Ztree等基础架构
Android Framework 层是 Android 系统中非常重要的一层,它提供了丰富的 API 和服务,包括 Activity、Service、Content Provider、Broadcast Receiver、PackageManager、Window Manager 等等,它们为应用程序提供了一个丰富的运行环境和开发框架。 Android Framework 层的源码主要包括以下几个部分: 1. Activity Manager:负责管理 Android 应用程序的生命周期、进程和任务栈等。 2. Package Manager:负责管理应用程序的安装、卸载和更新等操作。 3. Content Provider:提供了一种标准的接口,让应用程序之间可以共享数据。 4. Telephony Manager:提供了访问手机通讯功能的接口和服务。 5. Location Manager:提供了访问 GPS 和其他位置服务的接口和服务。 6. Notification Manager:提供了管理通知的接口和服务。 7. View System:提供了 Android 应用程序的 UI 界面的渲染和事件处理等功能。 8. Resource Manager:提供了访问 Android 应用程序的资源文件的接口和服务。 9. Window Manager:提供了窗口管理和界面绘制等功能。 10. Activity Manager Service:提供了 Activity Manager 的服务接口。 11. System Server:提供了 Android 系统的核心服务,包括 PackageManager、ActivityManager、WindowManager 等。 以上是 Android Framework 层源码的主要部分,通过阅读 Android Framework 层源码可以深入了解 Android 系统的实现原理和应用程序的开发框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值