【framework】ConfigurationContainer简介
简介 Framework
2023-09-11 14:20:52 时间
1 前言
如图所示,ConfigurationContainer 是 AMS 家族的重要基类;WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。
本文主要介绍 ConfigurationContainer、Configuration、WindowConfiguration、ConfigurationContainerListener。
2 源码
2.1 WindowConfiguration、Configuration、ConfigurationContainerListener
(1)WindowConfiguration
private Rect mAppBounds
private int mWindowingMode
private int mActivityType
(2)Configuration
public final WindowConfiguration windowConfiguration = new WindowConfiguration()
public float fontScale;
//Mobile Country Code
public int mcc
//Mobile Network Code
public int mcc
public Locale locale
public boolean userSetLocale
public int screenWidthDp
public int screenHeightDp
public int densityDpi
(3)ConfigurationContainerListener
void onOverrideConfigurationChanged(Configuration overrideConfiguration)
2.2 ConfigurationContainer
源码地址→/frameworks/base/services/core/java/com/android/server/wm/ConfigurationContainer.java
(1)类定义
//E为当前节点的子节点类型
public abstract class ConfigurationContainer<E extends ConfigurationContainer>
(2)主要属性
//容器配置
private Configuration mFullConfiguration = new Configuration()
//被覆盖的容器配置
private Configuration mOverrideConfiguration = new Configuration()
//被合并的容器配置
private Configuration mMergedOverrideConfiguration = new Configuration()
//监听被覆盖的容器配置是否发生变化
private ArrayList<ConfigurationContainerListener> mChangeListeners = new ArrayList<>()
(3)获取成员变量
//获取 mFullConfiguration
public Configuration getConfiguration()
//获取 mOverrideConfiguration
public Configuration getOverrideConfiguration()
//获取 mMergedOverrideConfiguration
public Configuration getMergedOverrideConfiguration()
(4)更新配置
//更新 mFullConfiguration
public void onConfigurationChanged(Configuration newParentConfig)
//更新 mOverrideConfiguration
public void onOverrideConfigurationChanged(Configuration overrideConfiguration)
(5)获取边框
//获取边框,取值:mFullConfiguration.windowConfiguration.getBounds()
public Rect getBounds()
//获取边框,取值:mOverrideConfiguration.windowConfiguration.getBounds()
public Rect getOverrideBounds()
(6)窗口模式
//获取窗口配置,取值:mFullConfiguration.windowConfiguration
public WindowConfiguration getWindowConfiguration()
//获取窗口模式,取值:mFullConfiguration.windowConfiguration.getWindowingMode()
public int getWindowingMode()
//是否处于多窗口模式
public boolean inMultiWindowMode()
//是否处于分屏模式
public boolean inSplitScreenWindowingMode()
//是否处于Pip模式
public boolean inPinnedWindowingMode()
//是否处于 FreeformW 模式(窗口可以移动)
public boolean inFreeformWindowingMode()
(7)ActivityType
//取值:mFullConfiguration.windowConfiguration.getActivityType()
public int getActivityType()
//取值:mFullConfiguration.windowConfiguration.getActivityType()
public int getActivityType()
public boolean isActivityTypeHome()
public boolean isActivityTypeRecents()
public boolean isActivityTypeAssistant()
public boolean isActivityTypeStandard()
(8)注册/注销监听器
//mChangeListeners.add(listener)
public void registerConfigurationChangeListener(ConfigurationContainerListener listener)
//mChangeListeners.remove(listener)
public void unregisterConfigurationChangeListener(ConfigurationContainerListener listener)
(9)抽象方法
//获取子节点个数
abstract protected int getChildCount()
//获取子节点
abstract protected E getChildAt(int index)
//获取父节点
abstract protected ConfigurationContainer getParent()
相关文章
- Entity Framework简介
- Linux firewall防火墙详解(一)——firewall基础知识简介
- 数字签名与数字证书技术简介 .
- Py之GUI之PyQt:PyQt的简介、入门、安装(QtCreator/QtDesigner安装图文教程)、经典案例之详细攻略
- BigData之MongoDB:MongoDB(基于分布式文件存储的非关系型数据库)的简介、下载、案例应用之详细攻略
- Python语言学习:Python语言学习之数据类型/变量/字符串/操作符/转义符的简介、案例应用之详细攻略
- Py之SnowNLP:SnowNLP中文处理包的简介、安装、使用方法、代码实现之详细攻略
- 【LINGO】lingo 软件简介
- 【Android Gradle 插件】Gradle 自动化构建 ① ( Gradle 构建工具简介 | Gradle 构建工具用途 )
- 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员区别 | 静态闭包变量 | 闭包中定义闭包 )
- HTTP 状态码简介(对照)
- 004-nginx简介、安装配置【源码安装和mac安装】、基本使用
- Nginx之过滤器ngx_http_sub_module模块简介和使用
- Python学习笔记一之简介、基础语法、数据类型转换
- Android -- 无线网络配置信息的管理者WifiConfigStore简介