【问题标题】:What is a "Panel" in an Android Window?什么是 Android 窗口中的“面板”?
【发布时间】:2015-11-25 19:46:21
【问题描述】:

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

Window.Callback API 从一个窗口返回给它的调用者。这允许 客户端拦截按键调度、面板和菜单等。

公共抽象视图 onCreatePanelView (int featureId)

在 API 级别 1 中添加

实例化要在面板中显示的视图 '功能ID'。可以返回null,这种情况下默认内容 (通常是菜单)将为您创建。

参数 featureId:正在创建哪个面板。

返回 view:放置在面板中的顶级视图。

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

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

我也仔细阅读了源代码,但如果不花几个小时在这个过程中,我就无法取得任何重大进展。

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

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

public boolean requestFeature (int featureId)

在 API 级别 1 中添加

启用扩展屏幕功能。这必须在之前调用 设置内容视图()。可以根据需要多次调用,只要它 在 setContentView() 之前。如果不调用,则不会有任何扩展功能 能得到的。一旦被请求,您就不能将其关闭。你 无法通过 FEATURE_CUSTOM_TITLE 使用其他标题功能。

参数 featureId:所需的特征,定义为常量 窗口。

返回:现在设置的功能。

谢谢, 巴里

【问题讨论】:

  • 为什么是-1???如果您有充分的理由对我的问题投反对票,请告诉我原因。谢谢....
  • 一个匿名的反对票,没有任何解释,似乎没有人知道答案。无赖。

标签: android android-windowmanager


【解决方案1】:

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

例如来自WindowManagerGlobal.addView():

// 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);
    }
  }
}

如果有人知道这不准确,或者对面板有更广泛或不同的定义,请告诉我/我们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多