decorview 和viewrootimpl如何绑定到一起
时间: 2024-05-27 17:13:02 浏览: 14
DecorView 和 ViewRootImpl 是在 Activity 的 setContentView() 方法中绑定到一起的。在 setContentView() 方法中会创建一个 DecorView,然后通过 ViewRootImpl 的 setView() 方法将 DecorView 与 ViewRootImpl 绑定起来。
相关问题
activitythread如何将viewrootimpl 绑定到Activity的Window
在ActivityThread的performLaunchActivity方法中,会创建一个PhoneWindow对象作为Activity的Window对象,并将其设置为Activity的mWindow成员变量。然后,通过调用PhoneWindow的getDecorView方法获取DecorView对象,再通过DecorView的getViewRootImpl方法获取ViewRootImpl对象。最后,将ViewRootImpl对象设置给Activity的mWindow对象的mDecor成员变量,完成ViewRootImpl和Activity的Window的绑定。具体代码如下:
```
Window window = activity.getWindow();
View decorView = window.getDecorView();
ViewRootImpl viewRootImpl = decorView.getViewRootImpl();
window.setWindowControllerCallback(viewRootImpl);
```
其中,window.setWindowControllerCallback方法会将ViewRootImpl对象设置为Window的回调对象,从而实现ViewRootImpl和Activity的Window的绑定。
android view如何获取DecorView
要获取DecorView,可以通过以下步骤:
1. 首先获取当前Activity的Window对象,可以调用Activity的getWindow()方法来获取。
2. 然后调用Window对象的getDecorView()方法即可获取到DecorView。
示例代码:
```java
// 获取当前Activity的Window对象
Window window = getWindow();
// 获取DecorView
View decorView = window.getDecorView();
```
值得注意的是,获取到DecorView后,可以通过它来获取整个屏幕的大小,以及设置全屏等操作。但是建议在开发中尽量避免直接对DecorView进行操作,以免影响系统UI的正常显示。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)