自定义View(一):相关知识
2016-05-31 23:44
281 查看
首先了解一下Activity相关的知识
Activity,Window,View 三者之间的关系首先我们来看一张图
图中的
Window是什么?
Window原来是
Activity的一个变量,可以通过
getWindow()获取,而且
Activity中经常用到的
setContentView原来调用的是
window的
setContentView。
Google说
Window是
WindowManager最顶层的视图,它负责背景(窗口背景)、
Title之类的标准的UI元素,
Window是一个抽象类,整个Android系统中
PhoneWindow是
Winodw的唯一实现类。
Activity充当了什么角色?他不是顶层窗口吗?
Activity实际意义上说,他并不能叫做一个容器或者窗口,他只是充当了一个控制器的角色,而屏幕上最外层的容器实际上是
DecorVIew,而
DecorView实际上是一个
FrameLayout,他的里面又有一个垂直的
LinearLayout,
LinearLayout下面又有两个
FrameLayout,第一个
FrameLayout是一个默认只有一个
TextVIew的标题栏,而第二个
FrameLayout则是我们在
Activity中
onCreate中set的ContentView
可以看到
DecorView是在
Window中的,
DecorView分为了两块区域,上面是标题栏,而绿色区域就是我们在
Activity的
setContentView()中设置的布局区域。
android的UI框架基本知识
Activity 是应用程序的基本组成部分,提供了可视的界面,与用户进行交互;具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的:
Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用
PolicyManager.makeNewWindo创建;
View:最基本的UI组件,表示屏幕上的一个矩形区域;
DecorView:是Window中View的RootView,设置窗口属性;
Window:表示顶层窗口,管理界面的显示和事件的响应;每个Activity 均会创建一个
PhoneWindow对象,是Activity和整个View系统交互的接口
WindowManager:一个interface,继承自ViewManager。所在应用进程的窗口管理器;
有一个implementation WindowManagerImpl;
主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。
ViewRoot:通过IWindowSession接口与全局窗口管理器进行交互:界面控制和消息响应;
ActivityThread:应用程序的主线程,其中会创建关联当前Activity与Window;
创建WIndowManager实现类实例,把当前DecoView加入到WindowManager;
相关类结构图
相关文章推荐
- 作业7
- java中普通变量、静态变量、静态代码块初始化的顺序辨析
- Hard-题目32:124. Binary Tree Maximum Path Sum
- 将两个两位数的正整数a、b合并形成一个整数放在C中。
- Hard-题目31:23. Merge k Sorted Lists
- 嵌入式LED驱动程序
- 文件下载: 云--->php服务---pc
- java-RocketMQ
- 反编译零碎
- Hard-题目30:85. Maximal Rectangle
- 杰奇模板详解
- android-linux ELF project template
- 一天一个shell命令 文本操作系列-linux dd使用教程
- 基础知识系列☞闲言
- 第二阶段团队项目冲刺站立会议(八)
- iOS开发UI篇—简单介绍静态单元格的使用
- 【转载】OGRE 2.1 Windows 编译
- CI(CodeIgniter)框架~验证码。。。
- 求平面上任意两点间的距离。
- Android ViewPager详解:基础篇