问题标签 [android-windowmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
163 浏览

android - 如何在计划期间更新视图

有人可以告诉我如何在预定期间更新视图。例如每秒。

我遇到的问题是,当我使用在不同线程上运行的计时器时,它不允许我更新视图并给出以下错误。

04-08 01:19:35.910: W/dalvikvm(11040): threadid=13: 线程退出未捕获异常 (group=0x40a3e1f8) 04-08 01:19:35.910: E/AndroidRuntime(11040): 致命异常: 线程-1376 04-08 01:19:35.910: E/AndroidRuntime(11040): android.view.ViewRootImpl$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。04-08 01:19:35.910: E/AndroidRuntime(11040): 在 android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039) 04-08 01:19:35.910: E/AndroidRuntime(11040): 在 android. view.ViewRootImpl.requestLayout(ViewRootImpl.java:709) 04-08 01:19:35.910: E/AndroidRuntime(11040): 在 android.view.View.requestLayout(View.java:12680) 04-08 01:19: 35.910: E/AndroidRuntime(11040): 在 android.view.View.setLayoutParams(View.java:8223) 04-08 01:19:35.910: E/AndroidRuntime(11040):

当我尝试从同一个 Activity 或服务更新它时,它会挂起而不做任何其他事情。只是在循环中运行。

那么,您能否告诉我正确的方法来执行此操作或解决更新图层的问题。

0 投票
2 回答
12515 浏览

android - Android webview 适合所有内容到屏幕上

嗨,我有一个 webview,我希望它适合屏幕,这样用户就不必水平或垂直滚动

我之前搜索过,很多人建议以下但它只限制宽度,用户仍然需要垂直滚动:

我尝试了另一种方法,使用缩放方法,但它不起作用.....我得到了窗口宽度(1024 像素),网页内容宽度也是 1024 像素!!所以缩放不起作用....有没有什么方法可以得到正确的比例?

或者....还有其他方法吗?....谢谢!!

只是一些注释:

要缩放 web 视图:

获取窗口宽度和高度:

0 投票
1 回答
1413 浏览

android - 从 Android 中的 WindowManager 添加的 View 中捕获 onTouch 或 onClick 事件

几天来我一直被一个问题困扰,我的谷歌搜索开始没有可能的解决方案。我正在尝试创建一个添加 View 并接收 onTouch 事件或 onClick 事件的类,就像 UndoBar 库一样。问题是永远不会调用 onTouch/onClick 事件,除非我将视图添加到 ViewGroup 而不是 WindowManager。这是我下面的非工作代码:

请注意:这里传递的Context是一个Activity Context。

为了使这段代码正常工作,我需要获取 Activity 的根布局并将 View 添加到其中。我的问题,可能是一个菜鸟问题,为什么我不能获得添加到 WindowManager 的 View 事件的 onTouch/onClick 呢?

谢谢你的帮助。

0 投票
1 回答
5839 浏览

android - 在 Android 启动器和其他应用程序屏幕上绘制浮动布局并管理此布局的生命周期

我想让一个浮动布局出现在手机上任何应用程序的所有屏幕上,我可以在这个布局上进行操作,除了在这个布局旁边运行的其他应用程序可以接收它自己的操作和事件

这是一个应用程序,可以满足我的需求https://play.google.com/store/apps/details?id=com.ninja.sms

这是我一直在研究的方法:我使用 WindowManager 来绘制布局,并使用服务来管理此布局。

我使用了以下库https://github.com/t0mm13b/TouchSoftly 但它有一些问题 1. 布局不接收动作或触摸事件,动作转到该库绘制的视图下的视图。2. 启动服务的activity终止后布局消失。

因此,我在以下代码段中对其进行了一些自定义

结果是:布局已经绘制并且可以获得触摸事件,但是当布局出现在屏幕上时,主页、返回和最近的应用程序按钮不起作用或对任何应用程序有任何影响。

所以仍然没有达到我想要的。

这是我正在处理的源代码和存储库,因此您可以查看我的源代码 https://github.com/mmelsabry/FloatingLayout

我知道这里还有另一个问题Floating widget / Overlay on Android 启动器

但这无济于事

0 投票
1 回答
1381 浏览

android - 在屏幕中心使用动画实现自定义视图的最佳方法?

我的目标是在我的应用程序中实现自定义 toast,如下所示:

我想设置“Toast”重力、布局、持续时间(不仅仅是 Length.SHORT/LONG)

到目前为止我尝试过的事情:

  • 具有 windowManager 对象问题的类是它必须在以下位置实现 android 系统动画:

    params.windowAnimations

当我尝试如下实现我的自定义动画时:

它没有实现我的动画。

  • 使用 rootView 元素向其添加 Toast 的布局:通过这种方式,只有当根视图为 FrameLayout 类型时,我才能成功实现所有内容(对于其他布局,我无法将“Toast”重力设置为中心)。

如果有人实现了此功能,我将不胜感激,或者如果我在其中一种方式中遗漏了某些东西,请指导我。

谢谢

0 投票
3 回答
76870 浏览

android - 使用哪些 API 来覆盖其他应用程序(例如 Facebook 的 Chat Heads)?

Facebook 如何在 Android 上创建聊天头?在所有其他视图之上创建浮动视图的 API 是什么?

0 投票
1 回答
6275 浏览

android - android.view.WindowManager$BadTokenException: 无法添加窗口 --

我们正在运行一个长时间运行的应用程序(运行超过 5 小时)来跟踪通过 GPS 的路径。随着时间的推移,我们不会增加任何数据。使用一些全局变量来保持距离和时间。但是当我们尝试显示对话框时,我们会崩溃,但很难重现。这是堆栈跟踪

我看到了这些帖子

链接 1 链接 2

和许多其他解决方案,每个人都告诉检查activity.isFinishing(),甚至我没有使用getApplicationContext() 来显示对话框。当我们没有调用finish()时,这很奇怪。请让我知道你的想法。

用于显示单击按钮时的对话框的 Java 代码:

单击按钮时调用的 HandleEndTrip() 方法

对于所有关于活动的事件处理程序,我创建了一个 java 类

事件处理程序代码:

}

0 投票
1 回答
554 浏览

android - 当软键盘在android中处于活动状态时,将我的窗口位置设置为顶部

我想在虚拟键盘处于活动状态时管理我的屏幕。在我有两个想法之前 1.
将父布局放在滚动视图中:但这里的问题是当我运行应用程序时,当虚拟键盘处于活动状态时,我的布局滚动到顶部,但没有孩子控件正在工作,即内部滚动视图和其他按钮被阻止。

2.获取edittext的坐标,这样我就可以根据eddittext的Y坐标来处理我的窗口移动到顶部了。这里使用的代码是

现在我不知道如何将这个位置带到我的窗口。请任何人帮助我,我的想法是否可行。如果没有,那么建议我有好主意。提前致谢。

我的Android SDK版本是:4.2

0 投票
3 回答
6210 浏览

android-layout - 移动位于 WindowManager 中的 ImageView 无法正常工作

我正在尝试在屏幕上的所有内容(TOP MOST)上绘制一个图标,类似于新 Facebook Messenger 的聊天头

我已经创建了一个在后台工作的服务,并且根据特定条件,我的图标应该出现在屏幕上(就像有人在 facebook 上向您发送消息时,Messenger 服务将挂钩消息并在屏幕上显示聊天头以通知你关于新消息)

我做了什么:

我已经创建了该服务并授予它显示系统警报窗口的权限(因为头部实际上是一个系统警报窗口)

我从 ImageView 继承了一个类(StickyHeadView)并使用以下方式实现了 OnTouchListener 侦听器:

该服务具有窗口管理器以在其上显示图标...在服务“OnStart”事件中我初始化了 Head :

如您所见,我已经声明了一个 WindowManager 并使用特殊参数向其中添加了视图(MyHead)

我的问题 :

当我尝试移动视图(我的头)时,它不会以稳定的方式移动并不断发生地震!

我正在真正的 HTC 手机上使用 android 4.0.4 对其进行测试

我正在使用单机器人

请帮助...如果触摸的实施不正确,请提出更好的方法...谢谢。

0 投票
1 回答
3210 浏览

android - WindowManager.LayoutParams alpha 问题

在我的应用程序中,我有一项服务,我在其中创建了一个使用 WindowManger 显示的视图:

我希望能够以这种方式动态控制其不透明度:

问题是它在我的android 4.2.2下的galaxy s3上,在我的android 2.3.6下的galaxy ace上,在android 2.3.3下的模拟器上运行得很好,但是它在我的android 2.3.3下的galaxy y上失败了: alpha 不能设置为 1 和 0 之间的值,因此它要么是完全透明的 (0),要么是完全不透明的 (1)。 我的问题是:有人有同样的问题吗?仅此手机会出现吗?有没有办法解决它或任何其他方法来改变不透明度?我已经在网上搜索了很长时间,但似乎没有人经历过同样的事情......我找到了一种解决方法,“一半”通过直接设置视图的不透明度来工作:

这次的问题是,在旧版本的 android 上它可以工作,但在 api 10 及更低版本上,即使我调用,视图的不透明度也不会更新,mFilter.postInvalidate()或者mWindowManager.updateView(mFilter, mParams). 我必须删除它(mWindowManager.removeView(mFilter))然后重新添加它,但它会导致屏幕闪烁,所以这是不可接受的......