`
263229365
  • 浏览: 465303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Activity是如何生成一个 view 的

阅读更多

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才是真正的显示视图

 

注: 一个Activity构造的时候只能初始化一个Window(PhoneWindow),另外这个PhoneWindow有一个”ViewRoot”,这 个”ViewRoot”是一个View活ViewGroup,是最初始的跟视图,然后通过addView方法将View一个个层叠到ViewRoot上, 这些层叠的View最终放在Window这个载体上面

分享到:
评论

相关推荐

    Activity中用代码动态加载布局

    activity中动态加载布局,有时候很常用,但是总是想不起来这种方法,所以写个例子和大家分享

    android 获取界面部分view,view截图,生成bitmap图片

    实现了获取界面部分view,生成bitmap图片,也就是view截图,获取指定view的截图,适用于分享截图等

    activiti-userguide-5-16中文开发手册(pdf版)

    Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。 在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中...

    Android 中 android.view.WindowLeaked的解决办法

    我们知道Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindown不能脱离Activity而单独存在着,...

    android面试题集锦(珍藏)

     分发的是MotionEvent事件了,因而我们讨论的问题就成了当MotionEvent事件生成之后,事件是怎么传递到某一个View控件上面并且得到处理的过程;  android事件产生后的传递过程是从Activity--->Window--->View...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    安卓zxing 代码demo

    3.创建一个新的Activity(demo里叫 SecondActivity )集成FragmentActivity,在清单文件里进行配置。 4. 修改新的Activity布局文件,是二维码的背景布局 <FrameLayout xmlns:android=...

    UUID随机数字

    利用UUID生成完全不重复的数字 package com.example.uuid; import java.util.UUID; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View....

    Android 滑动翻页源码

    2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up...

    Android 滑动翻页源码.zip

    2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up...

    Android代码-kotlin_tips

    汇总Kotlin相对于Java的优势,以及怎么用Kotlin去简洁、务实、高效、安全的开发,每个tip都有详细的说明和案例代码,争取把每个tip分析得清楚易懂,会不断的更新维护tips,欢迎fork进来加入我们一起来维护,有问题的...

    Android自主学习项目报告(一).doc

    然而,BUG是当恢复一个activity时,fragment transaction被执行了,应用就可能发生下面的下崩溃: 原因:不管何时,如果一个FragmentActivity放在后台,对应FragmentMangerI mpl中mStateSaved的flag就会设置为true...

    Android面试题整理

    Framework工作方式及原理,Activity是如何生成一个view的,机制是什么。 在Android中,怎么节省内存的使用,怎么主动回收内存?

    android群雄传

    10.5.1 生成Trace View日志的两种方法 241 10.5.2 打开Trace View日志 242 10.5.3 分析Trace View日志 242 10.6 使用MAT工具分析App内存状态 244 10.6.1 生成HPROF文件 244 10.6.2 分析HPROF文件 245 10.7 ...

    Android ViewPager 的使用总结

    在一个窗口里面添加tab便签,完成便签切换来实现页面的切换,这样的好处是可以在同一个窗口里面有多个页面,这些页面共享同一个窗口的资源,同使用多个窗口来实现这个功能来得更加流畅!! 主要产生的类文件有...

    Android webview 内存泄露的解决方法

    最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext。 1.避免在xml直接写webview...

    java8源码-just-mvp:你的下一个Activity,干干又净净

    java8 源码 just-mvp 一个轻量灵活小清新的 ...配套一个专属的一键生成 MVP 模板代码和布局的 AndroidStudio 插件 ,免于繁琐的样板代码编写,为你的生产力加分。 添加到你的项目 implementation 'com.bfu

    button按钮的四种监听及实例

    创建一个其他类 class mylistener implements OnClickListener{ @Override public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "点击了button按钮"); } }  二: protected void ...

    viewPager快速实现自定义页面滑动翻页.zip

    //使用前提:自己创建想要显示的多个页面文件,以及在activity对应的xml中添加标签即可。 //注:以下代码除了最后一行,其余均需根据自己的需求进行更改,这些代码的目的即创建自己想要显示的页面的列表。 //最后一...

    Android代码-AndroidChangeSkin

    与之前发布的ChangeSkin思路完全不同https://github.com/hongyangAndroid/ChangeSkin,主要因为ChangeSkin依赖V4,V7的版本,以及干涉系统构造View的过程,于是希望找到一个几乎没有侵入的方式来实现,于是产生了...

Global site tag (gtag.js) - Google Analytics