您的位置:首页 > 其它

自定义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;



相关类结构图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: