- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有一些不错的应用程序可以在用户打电话或接听电话时在顶部显示一些布局(例如“current caller id”)。
我需要创建一个能够在通话期间在顶部显示某些内容并使其具有交互性的应用。
使用 broadcastReceiver 、前台服务和 SYSTEM_ALERT 权限,我已经成功地在通话期间在屏幕上显示了一些东西。
只要显示的内容是静态的,我就没有问题。
但是,我注意到当我尝试使显示的内容具有交互性时,我遇到了一些问题:
一切都是跳跃的,这不仅包括动画,还包括将可见性设置为可见/消失。当我需要使事物可拖动时,我不想去想它会如何工作。
不确定是否是这个原因,但使用 SlidingDrawer 会使整个宽度都属于 SlidingDrawer,您无法点击它。这意味着如果它的位置在底部,当有人给您打电话时,您无法触摸“接听”按钮。
这些问题的原因是什么?
我怎样才能修复它们并能够正确显示内容?
其他应用如何正确处理它?</p>
编辑:关于 SlidingDrawer ,似乎它的位置和大小以及内容区域存在严重错误,即使它没有向用户显示并且用户可以看透,也无法触摸。不过,我不知道为什么,也不知道如何解决它,我也不知道为什么与普通应用程序相比,事情变得如此跳跃(可能是因为过度绘制,但它真的很慢)。
也许这个问题应该更笼统:how to make a floating window like on AirCalc ,可以轻松移动,但仍然非常快。
对于拖动功能,我尝试获取我显示的 Root View (类型为 WindowManager.LayoutParams )的 layoutParams,更新它并再次设置它,但由于某种原因它没有做任何事情.想知道我做错了什么。
编辑:看来我应该使用 windowManager.updateViewLayout 来更新布局参数。使用this post , 我让它完全可以拖动。
最佳答案
好的,我已经得出了一些结论,首先回答我原来的问题:
这可能是因为过度绘制和我使用的 View 。我想尝试可以替代 slidingDrawer 的库,但每个库都有不同的问题。使用简单的 View 证明了这个想法在一般情况下是可行的。
在可见性变化的情况下,它会跳动,因为使用当前的 WindowManager.LayoutParams 大小无法适应 View 的大小。
slidingDrawaer 确实有问题,因为它使用了关闭或打开时的整个尺寸。
现在讨论剩下的问题:
无法拖动?而不是常规的 setLayoutParams ,使用 windowManager.updateViewLayout 。
无法触摸视野之外的东西?根据您的需要设置其最小尺寸。您还可以设置窗口标志,以便触摸事件通过。
想听电话事件吗?您可以使用 broadcastReceiver 来触发应用程序的显示,但我怀疑挂断电话可能会导致有时稍后收到 Intent 。我认为您可以使用 telephonyManager 并在那里监听事件,使用您在前台运行的服务(我创建它只是为了确保应用程序不会在中间关闭)。
如果其他人有任何问题,我可以提供帮助。
关于android - 在通话期间显示交互式 float 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273613/
我知道问题的标题听起来很奇怪,但我不知道该怎么调用它。 首先,我有一个网格布局,我希望我的 .search-wrapper 宽度为 50% 并向右浮动。在我的演示中 jsfiddle整个 .searc
我们正在使用 QA-C 来实现 MISRA C++ 一致性,但是该工具会为这样的代码喷出错误: float a = foo(); float b = bar(); float c = a - b; 据
考虑 float a[] = { 0.1, 0.2, 0.3}; 我很困惑a稍后传递给函数 foo(float* A) .不应该是 float* 类型的变量指向单个浮点数,对吗?就像这里提到的tu
这可能是我一段时间以来收到的最好的错误消息,我很好奇出了什么问题。 原代码 float currElbowAngle = LeftArm ? Elbow.transform.localRotation
刚开始学习 F#,我正在尝试为 e 生成和评估泰勒级数的前 10 项。我最初编写了这段代码来计算它: let fact n = function | 0 -> 1 | _ -> [1
我已经使用 Erlang 读取二进制文件中的 4 个字节(小端)。 在尝试将二进制转换为浮点时,我一直遇到以下错误: ** exception error: bad argument in
假设我有: float a = 3 // (gdb) p/f a = 3 float b = 299792458 // (gdb) p/f b = 29979244
我每次都想在浏览器顶部修复这个框。但是右边有一些问题我不知道如何解决所以我寻求帮助。 #StickyBar #RightSideOfStickyBar { float : right ; }
我正在研究 C# 编译器并试图理解数学运算规则。 我发现在两种不同的原始类型之间使用 == 运算符时会出现难以理解的行为。 int a = 1; float b = 1.0f; Cons
假设我有: float a = 3 // (gdb) p/f a = 3 float b = 299792458 // (gdb) p/f b = 29979244
Denormals众所周知,与正常情况相比,表现严重不佳,大约是 100 倍。这经常导致 unexpected软件 problems . 我很好奇,从 CPU 架构的角度来看,为什么非规范化必须是 那
我有一个由两个 float 组成的区间,并且需要生成 20 个随机数,看起来介于两个 float 定义的区间之间。 比方说: float a = 12.49953f float b = 39.1123
我正在构建如下矩阵: QMatrix4x3 floatPos4x3 = QMatrix4x3( floatPos0.at(0), floatPos1.at(0), floatPos2.at(0),
给定归一化的浮点数f,在f之前/之后的下一个归一化浮点数是多少。 通过微动,提取尾数和指数,我得到了: next_normalized(double&){ if mantissa is n
关于 CSS“float”属性的某些东西一直让我感到困惑。为什么将“float”属性应用到您希望 float 的元素之前的元素? 为了帮助可视化我的问题,我创建了以下 jsFiddle http://
关于 CSS“float”属性的某些东西一直让我感到困惑。为什么将“float”属性应用到您希望 float 的元素之前的元素? 为了帮助可视化我的问题,我创建了以下 jsFiddle http://
我有一个新闻源/聊天框。每个条目包含两个跨度:#user 和#message。我希望#user 向左浮动,而#message 向左浮动。如果#message 导致行超过容器宽度,#message 应该
我想创建一个“记分卡”网格来输出一些数据。如果每个 div.item 中的数据都具有相同的高度,那么在每个 div.item 上留下一个简单的 float 会提供一个漂亮的均匀布局,它可以根据浏览器大
我正在学习使用 CSS float 属性。我想了解此属性的特定效果。 考虑以下简单的 HTML 元素: div1 div2 This is a paragraph 以及以下 CSS 规则: div {
我正在尝试从可以是 int 或 float 的文件中提取数据。我发现这个正则表达式将从文件 (\d+(\.\d+)?) 中提取这两种类型,但我遇到的问题是它将 float 拆分为两个。 >>> imp
我是一名优秀的程序员,十分优秀!