Bar*_*oyd 12 android android-windowmanager
Android窗口和相关页面的参考文档(例如,WindowManager.LayoutParams和Window.Callback)在很多地方引用"面板".例如,Window.Callback页面具有以下内容.
Window.Callback API从Window返回其调用者.这允许客户端拦截密钥调度,面板和菜单等.
和
public abstract查看onCreatePanelView(int featureId)
在API级别1中添加
实例化视图以在'featureId'面板中显示.您可以返回null,在这种情况下,将为您创建默认内容(通常是菜单).
参数featureId:正在创建哪个面板.
返回视图:要放置在面板中的顶级视图.
WindowManager.LayoutParams似乎将Panels视为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()之前调用它.可以根据需要多次调用,只要它在setContentView()之前.如果未调用,则不会提供扩展功能.请求后,您无法关闭该功能.您可以使用FEATURE_CUSTOM_TITLE来使用其他标题功能.
参数featureId:所需的功能,由Window定义为常量.
返回:现在设置的功能.
谢谢,巴里
我做了一些关于此的额外研究,主要是通过Android源代码.在大多数情况下,Panel似乎与Sub-Window同义,因为子窗口是在WindowManager.LayoutParams.即,窗口类型介于FIRST_SUB_WINDOW和之间LAST_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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人知道这是不准确的,或者对Panel有更广泛或不同的定义,请告诉我/我们.
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |