- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用众所周知的 TYPE_SYSTEM_OVERLAY
方法来创建始终位于其他 View 之上的全屏覆盖。
在 Moto Atrix2 API15
上,对于从 API 10
到 17
的每个 AVD
,覆盖 View 会自动调整大小(垂直扩展)当状态栏被另一个应用程序隐藏时。正如我认为的那样,叠加层似乎“保持在所有其他 View 的顶部”。当状态栏再次出现时,叠加层会再次自动缩小其大小(垂直像素减少,基本上减去状态栏的高度)。
这是期望的行为,并且我倾向于认为这不是异常(exception)或有缺陷的行为,因为它适用于许多不同的仿真器以及至少一个设备制造商 (motorola),也许更多,但我无权访问 addtl 设备。
问题:在 Samsung GS2 (API15)
上并在 Kindle Fire (API10?)
上测试过,覆盖不会自动当状态栏被另一个应用程序隐藏(全屏应用程序后面的状态栏)时,调整大小(填充状态栏曾经所在的空间)。在这些设备上,第一次创建 View 后,我不再从 View 的 onSizeChanged 覆盖中获得任何事件。
以下是相关代码:
params = new WindowManager.LayoutParams(
1, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSPARENT);
wm.addView(sizeLayout, params);
sizeLayout 具有 onSizeChanged 覆盖。
我几乎玩遍了所有我能找到的 windowmanager
layoutparam
,包括 SYSTEM_ALERT、FLAG_LAYOUT_IN_SCREEN 等。直到弄清楚这一点我才会 sleep !
2012 年 11 月 30 日编辑:我从@deviant 中找到了这个:https://stackoverflow.com/a/9195733/1851478这基本上就是我正在做的事情,但是问题仍然存在于某些设备没有自动调整 system_overlay 的大小。也许我应该提出一个错误。
更多信息:如果我在 View 树顶部有一个全屏应用程序时强制重绘(或者甚至只是加载覆盖应用程序),我的覆盖仍然不会在状态栏通常占用的空间上绘制(即使在绘制时状态栏不在 View 中),所以看起来好像覆盖没有“覆盖”在全屏的最前面窗口的顶部(我已经创建并测试了很多完整的使用各种方法使它们全屏显示的屏幕应用程序)。在这些设备上,让覆盖在状态栏上绘制的唯一方法(即使状态栏不在 View 中)是使用标志 FLAG_LAYOUT_IN_SCREEN
,但布局的大小永远不会变化,总是全屏,因此回到原来的问题,为什么这在某些设备上有效,但在其他设备上无效。
编辑 12/12/12:所以我在这方面没有任何进一步的运气,我确实尝试在 View 上使用 getLocalVisibleRect,但不幸的是,因为我的应用不拥有 SystemUI View ,它无法检测覆盖层下方的内容。我想使用自定义 ROM 我可以做到这一点,但我需要一个没有 root 的解决方案。
我确实看到市场上的其他应用程序在检测我上面列出的非工作手机上的状态栏时遇到了同样的问题。示例:酷工具,欧米茄状态栏和状态栏+。赏金筹集。
编辑 12/19/12 已添加图片。请注意,在工作设备上,灰色区域也“覆盖”黑色区域(当前全屏的任何应用程序),黑色区域实际上覆盖了整个屏幕,我只是将灰色区域显示为我的叠加层,即使它也是全屏(减去或加上状态栏的高度,取决于工作/非工作设备以及它是否在 View 中)。
最佳答案
希望我能理解您的需求,但是在我的应用程序(TEAM BatteryBar)中,我遇到了类似的问题。 (没有root最低权限)
我无法在 API11 以下的任何设备上检测到全屏(并且在 API11 以上的某些(主要是三星)设备上是间歇性的)。因此,我通过使用不同的布局参数向 WindowManager 添加第二个布局,然后通过检查窗口大小覆盖 onLayout 以检查 statusBar 是否仍然存在,从而为其创建了一个自定义监听器。从那里你可以对你的主视图做任何你需要做的事情。
我打算整理它,但它起作用了,所以我没有:P 代码已经有一年多了,而且是从我第一次开始为 android 编码时开始的,所以是的。值得深思。希望有帮助。
here is the code in a repo at my github直接从我的应用程序中复制粘贴我如何使用它。这里的小 fragment
wm.addView(sizeLayout, params);// add your view
// then add the next one
Screendetect mDetector;
mDetector = new Screendetect(this);
mDetector.setOnFullScreenListener(new OnFullScreenListener() {
@Override
public void fsChanged(boolean FS_Bool) {
// TODO rethink this to be better.... bit hacky...
if (FS_Bool) {
Log.d("battbardetect", "Statusbar hidden");
FS_vissible(); // do what ever you need to
} else if (!FS_Bool) {
Log.d("battbardetect", "Statusbar Vissible");
FS_hidden(); // do what ever you need to
}
}
});
wm.addView(mDetector, params);
关于android - 检测状态栏可见性/TYPE_SYSTEM_OVERLAY 未自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13631745/
我在 Mac OsX 10.11 上使用 Xcode 7.0.1 (7A1001) 我使用 carthage 0.9.2 通过以下购物车文件下载reactivecocoa github“Reactiv
我正在将一个对象从属性“模型”(我从 Laravel 中的 Blade 属性模型中获得)分配给数据属性模型。后来数据属性模型发生变化,因为它绑定(bind)到表单输入字段。但 Prop “模型”也发生
当我更新数组内对象的属性然后作为组件的 Prop 传递时,在 svelte 中触发 react 性的正确方法是什么? let items = [{ id: 1, name: 'first'
我是 DRY principle 的坚定拥护者: Every piece of knowledge must have a single, unambiguous, authoritative rep
我正在实现一个需要以下功能的线程: 及时响应终止请求 推送消息 在等待消息时保持对 SendMessage 请求的响应 我对消息泵的初始实现使用了 GetMessage,如下所示: while not
在我的应用程序中,用户获得了一份已到达她的文档列表,并且可以对每个文档执行操作。 文件是分批提交的,当这种情况发生时,列表会增加。这一切都很好,这是预期的行为,但最好有一个按钮“暂停实时数据”,它会忽
我有一个属性为 的数据对象 displaySubtotal 我可以通过以下方式更新该属性的值: data.displaySubtotal = numPad.valueAsAString(); 我的方法
我需要一个垂直 slider 输入。由于内置的 sliderInput 函数无法做到这一点,因此我选择自己实现。根据this thread可以 (I) 使用 CSS 旋转 sliderInput
我正在从自定义用户权限管理系统迁移到 Alanning:roles v2.0 .我有一个非常基本的结构: 基本用户 用户组,每个用户组都有特定的设置。我将它们存储在一个“组”集合中。 管理群组的用户的
Shiny 中的响应式(Reactive)表达式将更改传播到需要去的地方。我们可以使用 isolate 来抑制一些这种行为。 ,但是我们可以抑制基于我们自己的逻辑表达式传播的更改吗? 我给出的例子是一
是否有(或可能有) react 性 Parsec (或任何其他纯函数式解析器)在 Haskell 中? 简而言之,我想逐个字符地为解析器提供数据,并获得与我提供的足够多的结果一样多的结果。 或者更简单
HTML(JADE) p#result Lorem ipsum is javascript j s lo 1 2 4 this meteor thismeteor. meteor input.sear
我有一个被导入函数更改的对象。 https://svelte.dev/repl/e934087af1dc4a25a1ee52cf3fd3bbea?version=3.12.1 我想知道如何使我的更改反
我有一个YUV 420半平面格式的图像,其中字节以这种方式存储: [Y1 Y2 ... [U1 V1.... Yk Yk+1...] Uk' Uk'+1] 其中Y平面的大小是UV平面的两倍,并
如何使用 ReactiveCocoa 订阅从 NSMutableDictionary 添加和删除的对象?另外,我想在它发生变化时广播通知。我的猜测是可以使用 RACMulticastConnectio
我正在构建一个带有多个选项卡的应用程序,其中一些选项卡涉及过多的计算,而另一些选项卡的计算速度很快。一个允许用户在 react 性或手动更新之间进行选择的复选框,与“刷新”按钮结合使用,将是理想的选择
我知道您可以在获取集合时使用 reactive: false 关闭 react 性。如何在内容可编辑区域内的集合字段中实现相同的效果?示例: Template.documentPage.events(
我想在 z3 中表示一个哈希函数,比如 SHA(x)。在做了一些研究之后,似乎 z3 不能很好地支持注入(inject)性,所以我不能有像这样的约束(虽然我意识到这并不是严格意义上的碰撞,但作为一种启
我正在解决一个问题,我想在仪表板中将数据显示为图表(通过 perak:c3 )和表格(通过 aslagle:reactive-table )。我的问题是数据是从 MongoDB 中的集合中提取的,它的
我的 ViewModel 中有这个函数,它返回一个信号,但内部 block 不起作用,我尝试添加断点,但它没有中断。这是我的代码。 func executeLoginAPI() -> RACSigna
我是一名优秀的程序员,十分优秀!