一、首先说说View和ViewGroup吧

Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的。所有View的子类成为”Widget”,所有ViewGroup的子类成为”Layout”。View和ViewGroup之间采用了组合设计模式,可以使得“部分-整体”同等对待。ViewGroup作为布局容器类的最上层,布局容器里面又可以有View和ViewGroup。
二、LayoutInflater,LayoutInflater.inflate()这两个是什么意思?
LayoutInflater是一个用来实例化XML布局文件为View对象的类
LayoutInflater.infalte(R.layout.test,null)用来从指定的XML资源中填充一个新的View
三、Activity、Window、View之间的关系
而当我们运行程序的时候,有一个setContentView()方法,Activity其实不是显示视图(直观上感觉是它),实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实构造的时候初始化的是Window(PhoneWindow),Activity其实是个控制单元,即可视的人机交互界面。
打个比喻:
Activity是一个工人,它来控制Window;Window是一面显示屏,用来显示信息;View就是要显示在显示屏上的信息,这些View都是层层重叠在一起(通过infalte()和addView())放到Window显示屏上的。而LayoutInfalter就是用来生成View的一个工具,XML布局文件就是用来生成View的原料
再来说说代码中具体的执行流程
setContentView(R.layout.main)其实就是下面内容。(注释掉本行执行下面的代码可以更直观)
getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main,null))
即运行程序后,Activity会调用PhoneWindow的setContentView()来生成一个Window,而此时的setContentView就是那个最底层的View。然后通过LayoutInflater.infalte()方法加载布局生成View对象并通过addView()方法添加到Window上,(一层一层的叠加到Window上)
所以,Activity其实不是显示视图,View才是真正的显示视图

转载于:https://www.cnblogs.com/dongdong230/archive/2013/05/26/4183136.html

【Android 界面效果10】Android中View,ViewGroup,Window之间的关系相关推荐

  1. 深入理解WMS(三):剖析Activity,View,Window之间的关系

    这篇课程开头就说在"接触 Android 开发时,我始终认为它就是负责将 layout 布局中的控件渲染绘制出来的".的确,对于layout布局怎么跟Activity关联起来的,都 ...

  2. 理清Activity、View及Window之间关系

    我的简书同步发布:理清Activity.View及Window之间关系 转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001] View.W ...

  3. Python中怎样改变集合之间的关系?

    Python中怎样改变集合之间的关系?数学中,两个集合关系的常见操作包括:交集.并集.差集.补集.设A,B是两个集合,集合关系的操作介绍如下: 交集是指属于集合A且属于集合B的元素所组成的集合, 并集 ...

  4. 一文理清Mybatis中resultType与resultMap之间的关系和使用场景

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 1.概述 Mybatis ORM半自动映射框架对java开发工程师来说应该是必会的框架之一. ...

  5. OpenVX中 graph与node之间的关系,以及在CNN中的定位

    OpenVX中 graph与node之间的关系,以及在CNN中的定位 很多小伙伴都知道,OpenVX是用来处理图像的一组API,核心是kernel函数的实现,OpenVX对于图像处理是调用底层硬件的G ...

  6. (1)三相电机中相电压与线电压之间的关系 (2)电机转速,机器速度,电角速度之间的关系(3)磁链估算和磁场定向的定义

    三相电机中相电压与线电压之间的关系 Ua=1/3(2Uab+Ubc) Ub=1/3(Ubc-Uab) Uc=-1/3(Uab+2Ubc) 电机转速,机械速度,电角速度之间的关系 电角速度=机器速度* ...

  7. 【Android 界面效果9】9patch图片

    1.什么是"9妹"(9patch)? 它是一个对png图片做处理的一个工具,能够为我们生成一个"*.9.png"的图片;  2.何为"*.9.png& ...

  8. 【Android 界面效果49】RecyclerView高度随Item自适应

    编写RecyclerView.ItemDecoration时,在onDraw方法中,Drawable的高度等于RecyclerView的高度减去RecyclerView的上下padding. @Ove ...

  9. android波纹效果弹窗,Android自定义View实现波纹效果

    Android自定义View实现波纹效果 时间:2017-05-27     来源:移动互联网学院 1.引言:随着Android智能手机的普及,Android应用得到了大力支持,而Android应用的 ...

最新文章

  1. 玩不转大数据就别勉强了,或许“小数据”才是真正的终南捷径
  2. JavaScript多文件下载
  3. MongoDB优化之二:常见优化方法
  4. 牛客网【每日一题】5月22日 [CQOI2009]中位数图
  5. java学习(46):无参带返回
  6. python获取当前脚本所在路径并在此基础上创建新的文件路径
  7. 设计模式C++实现——工厂模式
  8. 开课吧课堂:详解挂起、恢复和终止线程
  9. Leetcode 207. 课程表(值得一刷的宽搜)
  10. 智能体挑战赛 - “奥林匹克 跑步运动”
  11. mysql数据库myd文件丢失怎么_mysql数据库的恢复(frm、Myd、MyI文件仍存在)
  12. Python练习题答案: 纳特拼音alaphabeta【难度:1级】--景越Python编程实例训练营,1000道上机题等你来挑战
  13. SM2 SM3 SM4 国密版本,基于bouncycastle 实现
  14. 前端导出word图片
  15. excel快速自动填充空白单元格上一行的内容
  16. 使用120台相机进行3D拍照建模
  17. linux键盘错位1格,键盘按键错乱,教您修复键盘按键错乱的方法
  18. 1.3-聊天机器人的模块和框架
  19. 实现点击图片放大查看功能
  20. 深入浅出Pytorch函数——torch.arange

热门文章

  1. windows安装ffmpeg
  2. vue中的props对象
  3. 5.0安装没有costom mysql_Zabbix5.0监控mysql配置
  4. python前后端分离前端权限_Linux上搭建前后端分离项目
  5. java spring流程_浅谈SpringMVC执行过程
  6. 设置linux英文环境,英文Linux里中文和日文用户环境设置
  7. cmd 调用webservice接口_c# 三种方法调用WebService接口
  8. 泊松分布的分布函数_常见概率分布汇总
  9. Apache Flink 零基础入门(二十一)Flink HistoryServer概述与配置
  10. 还在搜百度图片?太LOW了!