Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。 并维护应用程序的生命周期。Activity本身是个庞大的载体,可以理解成是应用程序的载体,如果木有Activity,android应用将无法运行。也可以理解成
android应用程序的入口。Acivity的实例对象由系统维护。系统服务ActivityManager负责维护Activity的实例对象,并根
据运行状态维护其状态信息。
当我们调用Acitivity的
setContentView方法的时候实际上是调用的Window对象的setContentView方法,所以我们可以看出Activity中关于界
面的绘制实际上全是交给Window对象来做的。绘制类图的话,可以看出Activity聚合了一个Window对象。
在该方法中,首先创建一个DecorView,DecorView是一个扩张FrameLayout的类,是所有窗口的根View。我们在Activity中调用的setConctentView就是放到DecorView中了。这是我们类图的聚合关系如下:
Activity--->Window--->DecorView
Activity创建后系统会调用其attach方法,将其添加到ActivityThread当中,在attach方法中创建了一个window对象。window对象是一个抽象类。要注意window对象创建时并木有创建
Decor对象。用户在Activity中调用setContentView,然后调用window的setContentView,这时会检查
DecorView是否存在,如果不存在则创建DecorView对象,然后把用户自己的View 添加到DecorView中。
在ActivityThread当中调用wm.addView(decor, l);把它加入到window manager proxy的mViews中,同时为这个decor view创建一个ViewRoot,ViewRoot负责协调decorview与windowmanager直接绘图、事件处理。说简单点就是DecorView是客户端所有view的根,window manager proxy为这个decorview创建一个ViewRoot和Window manager service打交道
我们可以去看看DecorView的实现,它是PhoneWindow的一个内部类。实
现很简单,它默认会包含一个灰色的标题栏,然后在标题栏下边会包含一个空白区域用来当用户调用setContentView的时候放置用户View,并传
递事件。
分享到:
相关推荐
在Android开发中,"悬浮Activity"通常指的是一个可以悬浮在其他应用之上,类似Dialog样式但功能更为丰富的Activity。这样的设计可以提供用户一种便捷的方式访问或操作应用,而无需完全退出当前正在使用的应用。悬浮...
在Android中,每个Activity都与一个Window对应,它是一个抽象层,负责处理显示内容和用户交互。我们可以通过设置Window的属性来改变应用的视觉效果,例如背景颜色、透明度等。 要实现夜间模式,我们需要做以下几步...
**Translucence Window**(半透明窗口)是Android 5.0(Lollipop)引入的新特性,它允许Activity的背景变得半透明,从而实现过渡效果和沉浸式体验。通过设置Window的属性,如FLAG_TRANSLUCENT_STATUS和FLAG_...
在Android应用开发中,UI交互的流畅性和用户体验密切相关,而Activity和Fragment之间的跳转以及共享元素动画正是提升这种体验的重要手段。本篇文章将详细讲解如何在Android中实现Activity与Fragment之间的平滑过渡...
这涉及到Android的窗口动画(Window Animation)和场景过渡(Transition)。在本篇文章中,我们将深入探讨如何实现这一功能。 首先,Android中的窗口动画是指当Activity进入或退出屏幕时显示的视觉效果。这可以通过...
在Android系统中,WindowManager服务负责管理所有应用的窗口,而Activity实际上就是一种特殊的Window。默认情况下,Activity会全屏显示,但我们可以通过修改Activity的属性和使用自定义布局来改变这一行为。 1. ...
在Android框架的核心部分,`Window`类位于`frameworks\base\core\java\android\view\Window.java`文件中。该文件连同注释一起约有一千多行代码,其中涵盖了`Window`类的基本属性和核心功能。 #### 三、Window类的...
在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和解决。 #### ActivityThread `...
然后通过startActivity(String id, Intent intent)这个方法获取Window获取当前Window对象,再然后调用getDecorView()方法获取当前activity对应的view,这样就可以使用addView(View child)方法添加到activity中。
本文将深入探讨Android中的`Window`类及其相关特性,帮助开发者更好地理解其工作原理以及如何在实际应用中使用。 #### 二、Window类介绍 `Window`类是Android框架提供的一个核心类,用于管理一个应用窗口的所有...
本文将深入探讨Android中Window添加View的底层原理,包括Window和WindowManager的概念、交互方式以及添加View的关键步骤。 首先,Window是一个抽象类,实际的实现是PhoneWindow。创建Window并不直接操作,而是通过...
5. 数据绑定和MVVM架构:WindowView可能采用了现代Android开发中的MVVM(Model-View-ViewModel)架构,利用DataBinding库将UI和数据模型绑定,提高代码可读性和可维护性。 6. 线程通信:在多线程环境下,WindowView...
在Android开发中,Activity是应用的基本组件,用于与用户交互并展示内容。当我们需要实现一个自定义的下拉选择列表时,通常会涉及到对UI组件的定制和触摸事件的处理。下面将详细介绍如何在Android的Activity中创建...
Android 中 Window 管理深入讲解 Android 中的 Window 管理是 Android 开发中非常重要...Android 中的 Window 管理是非常复杂的,需要深入理解 Window 和 WindowManager 的关系,以及 Window 的 flags 等属性的使用。
在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容。当我们需要在Webview中实现HTML页面与原生Android应用的交互时,例如点击HTML按钮跳转到一个新的Activity,就需要利用到JavaScript...
在本文中,我们就将详细分析Android应用程序窗口对象的创建过程。为了方便接下来描述类型为PhoneWindow的应用程序窗口的创建过程,我们将这两个图拿过来,如以下的图1和图2所示:图1Activity和Win
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。WebView不仅能够呈现HTML、CSS和JavaScript,还支持与原生Android应用程序的交互,从而实现混合式应用开发。在这个主题...
Window表示一个窗口的概念,Window是...Android中,所有的视图都是通过Window来呈现,不管是Activity、Dialog、还是Toast,它们的视图实际上都是附加在Window上,因此Window是实际View的直接管理者,单击事件由Window传
有一些开源库,如`android-useful-dialogs`和`android-keyboard-aware-scroll-view`,已经实现了键盘弹出时底部视图上移的功能。可以直接集成这些库,简化开发过程。 在"Android 底部控件随软键盘弹出demo"这个...