关闭

自定义View(一):相关知识

标签: 自定义ViewAndroid-UI
82人阅读 评论(0) 收藏 举报
分类:

首先了解一下Activity相关的知识

Activity,Window,View 三者之间的关系

首先我们来看一张图
Activity Window View 关系图

  • 图中的Window是什么?
    Window原来是Activity的一个变量,可以通过getWindow()获取,而且Activity中经常用到的setContentView原来调用的是windowsetContentView
    Google说WindowWindowManager最顶层的视图,它负责背景(窗口背景)、Title之类的标准的UI元素,Window是一个抽象类,整个Android系统中PhoneWindowWinodw的唯一实现类。

  • Activity充当了什么角色?他不是顶层窗口吗?
    Activity实际意义上说,他并不能叫做一个容器或者窗口,他只是充当了一个控制器的角色,而屏幕上最外层的容器实际上是DecorVIew,而DecorView实际上是一个FrameLayout,他的里面又有一个垂直的LinearLayoutLinearLayout下面又有两个FrameLayout,第一个FrameLayout是一个默认只有一个TextVIew的标题栏,而第二个FrameLayout则是我们在ActivityonCreate中set的ContentView

Window DecorView层级关系图

可以看到DecorView是在Window中的,DecorView分为了两块区域,上面是标题栏,而绿色区域就是我们在ActivitysetContentView()中设置的布局区域。

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;

Android UI 框架关系相关类关系图

相关类结构图
相关类结构图

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:84次
    • 积分:3
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档