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

转载 2016年05月31日 23:44:51

首先了解一下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 框架关系相关类关系图

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

自定义View的基本知识和步骤

自定义view的基本知识和步骤
  • qq_18870023
  • qq_18870023
  • 2016年04月01日 10:34
  • 1032

View的相关面试题(待补充)

1 常用组件的使用:ListView、RecyclerView及Adapter的使用2 View之间的继承关系3 Invalidate与postInvalidate的区别前者是在UI线程自身中使用,而...
  • qq_25859403
  • qq_25859403
  • 2016年07月25日 16:17
  • 209

自定义View相关知识记录

View.MesureSpec 说明 MesureSpec 将 size 和 mode pack到一个 int 型的值里。(减少类的创建和销毁) 关于 Mode,它有三个值: UNSPEC...
  • wuzhong8809
  • wuzhong8809
  • 2016年01月29日 10:34
  • 162

关于简单的自定义view以及相关知识

关于简单的自定义view以及相关知识自定义View的简单步骤 1.新建一个Class继承自View(自定义View一般有直接继承View,某个具体的控件如ImageView,ViewGroup三种)...
  • sinat_33878878
  • sinat_33878878
  • 2017年03月29日 23:04
  • 87

基础篇-View事件传递与绘制机制,自定义View实现理解

关于View事件传递机制的理解,整理
  • gjr9596
  • gjr9596
  • 2016年08月15日 19:30
  • 940

自定义View的事件分发机制

开篇语:最近程序在做一个小效果,要用到touch,结果整得云里面雾里的,干脆就好好把android touch机制好好看了一下,呵呵。。 android系统中的每个ViewGroup的子类都具有...
  • ljx19900116
  • ljx19900116
  • 2014年12月03日 17:05
  • 2597

Android View系列一: View基础知识

1.什么是ViewView是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件,除了View,还有ViewGroup(控件组),ViewGroup内部包含了许多控件,即一组...
  • fang323619
  • fang323619
  • 2016年05月10日 22:05
  • 2035

Android自定义view之事件传递机制

Android自定义view之事件传递机制 本文是自定义view入门的第二篇文章,主要讲解Android的事件分发流程,结合上一篇的绘制等流程,基本就可以掌握自定义view的核心内容。后续我会写一...
  • zuguorui
  • zuguorui
  • 2017年08月08日 23:27
  • 281

关于自定义View的基础思路以及画布的解析

1、前言 UI作为用户看得到的东西,已经成为吸引用户的最重要因素了。在android中提供了大量的widget以及主题和属性,加上各种动画,已经可以实现非常多很绚丽的控件了。但是很多情况下,仅仅使...
  • qq_25722767
  • qq_25722767
  • 2016年08月21日 01:05
  • 1242

自定义控件知识储备-View的绘制流程

在自定义控件这个学习系列里,首先写篇文章记录一下View的绘制流程,压压惊:-P。也为以后的自定义控件实践打个基础。虽然讲解View工作流程的文章很多,其中不乏很多精品文章,不过自己能从中理清思路,以...
  • yisizhu520
  • yisizhu520
  • 2016年05月29日 00:19
  • 8345
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义View(一):相关知识
举报原因:
原因补充:

(最多只允许输入30个字)