您的位置:首页 > 移动开发 > Android开发

阿里技术协会好文推荐:Android绘制流程

2016-12-27 00:00 295 查看
摘要: 一、前言 1.1、C++界面库   MFC、WTL、DuiLib、QT、Skia、OpenGL。 Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的。 1.2、Android基本概念 窗口   对用户来说, 窗口就是手机屏幕, 包括下面的那...

一、前言

1.1、C++界面库

  MFC、WTL、DuiLib、QT、Skia、OpenGL。
Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的。

1.2、Android基本概念

窗口

  对用户来说, 窗口就是手机屏幕, 包括下面的那些home、back按键、状态栏等。对于Activity来说, 窗口就是除系统状态栏和系统按键的屏幕区域, 有window之类的概念。对于wms来说, 它没有什么窗口的概念, 它能接受的只是一个个view而已。也就是Activity这里还有Window这个概念, 但在wms那里, 已经没有window的概念了。
窗口类型分为应用程序窗口: 就是一般应用程序的窗口, 比如我们应用程序的Activity的窗口。子窗口: 一般在Activity里面的窗口, 比如TabActivity。系统窗口: 系统的窗口, 比如输入法、Toast、墙纸等等…系统窗口不需要对应任何Activity, 也不需要有父窗口, 对于应用程序而言, 理论上是无法创建系统窗口的, 因为所有的应用程序都没有这个权限, 然而系统进程却可以创建系统窗口。WindowManager.LayoutParams里面有关于各种窗口的type类型定义, type还有个含义就是窗口的z-order, 值越大, 显示的位置越在上面。

Window、PhoneWindow

  顶层窗口样式和行为的抽象类, 概括了Android窗口的基本属性和基本功能。该类实例的getDecorView()方法返回的DecorView被用来作为顶层视图添加到WM中。
创建时机: ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivity --->Activity.attach

WindowManager、WindowManagerImpl、WindowManagerGlobal

  与一个特定的Display相关联, WindowManager主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。它面向的对象一端是屏幕, 另一端就是 view , 直接忽略我们以前的 Activity 或者 Dialog 之类的东东。WindowManager是一个接口类, 其真正的实现是WindowManagerImpl, 后者同时也是整个应用程序中所有Window的管理者。

Activity

  Activity是支持显示UI的, 但不直接管理view树或者ViewRoot, Activity并没有与这两者产生直接的联系, 是通过中间 “Window”的对象。
创建过程: 1>、 使用代理模式启动到ActivityManagerService中执行;
2>、 创建ActivityRecord到mHistory记录中;
3>、 通过socket通信到Zgote相关类创建process;
4>、通过ApplicatonThread与ActivityManagerService建立通信;
5>、ActivityManagerService通知ActiveThread启动Activity的创建;
6>、ActivityThread创建Activity加入到mActivities中并开始调度Activity执行;
7>、ActivityThread.handleLaunchActivity ---> ActivityThread.performLaunchActivity

阅读全文请点击:http://click.aliyun.com/m/8719/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息