首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是Android窗口中的“面板”?

什么是Android窗口中的“面板”?
EN

Stack Overflow用户
提问于 2015-11-25 19:46:21
回答 1查看 2.2K关注 0票数 14

Android和相关页面的参考文档(例如WindowManager.LayoutParams和Window.Callback)在许多地方都提到了“面板”。例如,Window.Callback页面具有以下内容。

从窗口返回到调用方的Window.Callback API。这允许客户端拦截密钥分配、面板和菜单等。

公共抽象视图onCreatePanelView (int featureId) 在API级别1中添加 实例化要在面板中显示的视图,以表示“功能in”。您可以返回null,在这种情况下,将为您创建默认内容(通常是菜单)。 参数featureId:正在创建哪个面板。 返回视图:要放置在面板中的顶级视图。

WindowManager.LayoutParams似乎将面板视为Windows的“类型”,例如:

TYPE_APPLICATION_PANEL窗口类型:应用程序窗口顶部的面板。TYPE_APPLICATION_SUB_PANEL窗口类型:应用程序窗口顶部的子面板.TYPE_STATUS_BAR_PANEL窗口类型:从多用户系统中的状态栏上滑出的面板,显示在所有用户的窗口上。TYPE_SYSTEM_DIALOG窗口类型:从多用户系统中的状态栏中滑出的面板显示在所有用户的窗口上。

我也仔细阅读了源代码,但没有花费几个小时的时间就无法取得任何重大进展。

参考文档中使用的Windows面板是什么?

与此相关的是,什么是featureId?在上面的onCreatePanelView (int featureId)中,它似乎是用于指定面板的ID,但在其他上下文中,它似乎用于标识一组Window.requestFeature()功能:

公共布尔requestFeature (int featureId) 在API级别1中添加 启用扩展屏幕功能。这必须在setContentView()之前调用。只要是在setContentView()之前,就可以按需要调用多少次。如果不调用,则无法获得扩展功能。一旦需要功能,您就不能关闭它。您不能在FEATURE_CUSTOM_TITLE中使用其他标题特性。 参数featureId:所需的特性,按窗口定义为常量。 返回:现在设置的功能。

谢谢,巴里

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 21:34:29

我对此做了很多额外的研究,主要是通过Android的源代码。在大多数情况下,面板似乎是子窗口的同义词,因为子窗口是在WindowManager.LayoutParams中定义的。即FIRST_SUB_WINDOWLAST_SUB_WINDOW之间的窗口类型,包括。

例如,来自WindowManagerGlobal.addView()

代码语言:javascript
运行
复制
// If this is a panel window, then find the window it is being
// attached to for future reference.
if (wparams.type >= WindowManager.LayoutParams.FIRST_SUB_WINDOW &&
  wparams.type <= WindowManager.LayoutParams.LAST_SUB_WINDOW) {
    final int count = mViews.size();
    for (int i = 0; i < count; i++) {
      if (mRoots.get(i).mWindow.asBinder() == wparams.token) {
        panelParentView = mViews.get(i);
    }
  }
}

如果有人知道这是不准确的,或有一个更广泛或不同的定义,请让我/我们知道。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33925197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档