Activity就像工匠,Window就像是窗户,View就像是窗花,LayoutInflater像剪刀,Xml配置像窗花图纸。 Android根据他们不同的职能让他们各斯其活,同时也相互配合展示给我们灵活、精致的界面。 一张图理清所有层级关系: View、Window以及Activity主要是用于显示并与用户交互的。这让我们在初学的时候很容易弄混,而且无法理解他们区别...
简单来说,Activity是用户交互的入口,负责加载和管理Window,而Window则是用于承载View的容器。在一个Activity中,通常会有一个默认的Window,并在其上创建多个View以展示用户界面。 图示:Activity、Window与View的关系 33%33%33%Activity, Window & View关系图ActivityWindowView 图中的每一部分都表示了Activity、Window和...
我们可以把view通过xml布局,或者通过new View(),然后通过addview方法或动态或静态添加到Activity的布局上。我们都知道我们定义了layout布局,通过SetContentView就可以设置到Activity上,而Activity中的SetContentView()方法,又调用了Window的SetContentView方法,也就是View通过Activity最终添加到了Window上面。 那我们今天就看...
int ident,Application application,Intent intent,ActivityInfo info,CharSequence title,Activity parent,String id,NonConfigurationInstances lastNonConfigurationInstances,Configuration config,String referrer,IVoiceInteractor voiceInteractor,Window window,ActivityConfigCallback activityConfigCallback,IBinder assistToken){atta...
Window:顶级窗口外观和行为策略的抽象基类。唯一实现是 PhoneWindow类。 Activity:四大组件之一,它提供一个界面让用户点击和各种滑动操作。 View:代表用户界面组件的基本构建块,UI 组件。 源码:Android SDK 30 Activity.setContentView 不知道从哪入手,咱们就从setContentView开始,比较刚创建的Android项目Activity和setCont...
Activity是一个工人,它来控制Window;Window是一面显示屏,用来显示信息;View就是要显示在显示屏上的信息,这些View都是层层重叠在一起(通过infalte()和addView())放到Window显示屏上的。而LayoutInfalter就是用来生成View的一个工具,XML布局文件就是用来生成View的原料·· ...
Activity--->Window--->DecorView 这是我们得出这3个类之间最直接的一个关系。 我们详细分析一下,类对象是如何被创建的。 先不考虑Activity的创建(因为 Acitivity的实例由ActivityManager维护,是在另一个进程设计到IPC的通信,后面会讲到),而考虑Window和View的创建。
Activity--->Window--->DecorView Activity创建后系统会调用其attach方法,将其添加到ActivityThread当中,在attach方法中创建了一个window对象。window对象是一个抽象类。要注意window对象创建时并木有创建 Decor对象。用户在Activity中调用setContentView,然后调用window的setContentView,这时会检查 DecorView是否存在,如果不...
Android所有展示的页面所有的View都被装载在Window中,Window是一个抽象类,它的唯一实现类是PhoneWindow,而Activity中有一个window的对象这点从Activity的源码就可以看到,如下: finalvoidattach(Context context,ActivityThread aThread,Instrumentation instr,IBinder token,int ident,Application application,Intent intent,Activ...
通过setContentView 的流程,分析了 Activity、Window、View 之间的关系。整个过程 Activity 表面上参与度比较低,Activity持有Window的对象,View在Window上的增删等操作又是通过WindowManager来管理的,而WindowManager又是通过Binder机制获取到的WMS的映射,WMS把View真正显示到屏幕上。