Articles of android windowmanager

WindowManager中的全屏

这是我的代码: params = new WindowManager.LayoutParams( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, PixelFormat.TRANSLUCENT); wm = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE); inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); mTopView = (ViewGroup) inflater.inflate( R.layout.activity_invisible, null); params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_FULLSCREEN; if(keep==true){ int value = brightnessIntent.getExtras().getInt(“value”); float v=value/255.0f; params.dimAmount=0; params.alpha=v; rl = (RelativeLayout) mTopView.findViewById(R.id.window); getWindow().setAttributes(params); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); wm.addView(mTopView, params); } 视图仍显示状态栏, mTopView是一个叠加窗口。 […]

WindowManager $ BadTokenException无法添加窗口

我正在为背景录像开发应用程序,这就是为什么我使用WindowManager,但它对我没有用。以下错误: 08-23 15:38:21.021: E/AndroidRuntime(4200): java.lang.RuntimeException: Unable to create service com.example.prankapp.BackgroundVideoRecorder: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@418c0b68 — permission denied for this window type 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2277) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.access$1600(ActivityThread.java:128) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1215) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Handler.dispatchMessage(Handler.java:99) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.os.Looper.loop(Looper.java:137) 08-23 15:38:21.021: E/AndroidRuntime(4200): at android.app.ActivityThread.main(ActivityThread.java:4517) 08-23 15:38:21.021: […]

有多少个WindowInsets?

我不了解WindowInsets rects,因为docs说: 系统窗口插图表示全屏窗口的区域,该窗口被状态栏,导航栏,IME或其他系统窗口部分或完全遮盖。 因此,多个WindowInsets可以在每个都有自己的rect(一个用于状态栏,另一个用于导航栏……),我该如何检索它们? 或者只有一个WindowInsets,它的左上角 – 右下角坐标是应用程序可用窗口的矩形吗?

使用adjustPan作为软输入模式时是否可以始终显示操作栏?

在我的应用程序中,我有一个带有页脚的ListView ,其中包含一个带有EditText的自定义视图。 在顶部坐着一个动作栏。 当前活动使用SOFT_INPUT_ADJUST_RESIZE ( adjustResize )作为软输入模式,并且在滚动时不关闭键盘。 为了显示更多列表,我想在滚动时删除键盘并获得更平滑的滚动行为,我想更改以便使用SOFT_INPUT_ADJUST_PAN ( adjustPan )。 但是,如果我更改为adjustPan ,则整个视图(包括操作栏)会被推高。 我希望列表视图被推送,但操作栏始终保持在顶部。 这可能吗? 如果没有,是否可以使用adjustResize并获得平滑的resizeanimation? 到目前为止,我尝试过: 请求Window.FEATURE_ACTION_BAR_OVERLAY ,但这并没有帮助,尽管文档听起来很有希望。 根据软键盘是否可见来移动操作栏容器,最终看起来像一个大规模不稳定的黑客,所以我报废了它。 到目前为止,我已经排除了adjustResize ,因为滚动时会出现绘图行为,同时最小化键盘并调整列表视图的大小。 有没有办法使平滑的animationresize?

android从全屏模式退出

我在Android工作。 我需要以全屏模式显示我的活动,我使用以下代码完成此操作。 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 现在看起来像这样: – 现在我想退出这个完整模式,所以我的活动应该像以前一样显示。 喜欢这个:- 我有一个按钮,用于在完全模式或正常模式之间切换,我将一次又一次地切换模式。 请建议我怎么做这个。 意味着如何从全屏获得正常的屏幕。 先谢谢你。

为什么我的EditText复制/粘贴菜单位于EditText下? 如何更改popup窗口的z顺序?

注意 如果有人知道如何订购(z-order)Windows通过windowmanager添加,我也会接受答案,因为它将回答所有问题。 实际上我只是通过windowManager.addView(MyView)立即执行windowManager.addView(MyView)以将视图放在另一个视图之前,但这并不理想,因为它可视地删除并添加视图。 它看起来很疯狂,他们在android中没有构建function来做这么简单的思考。 我创建了一个包含EditText的视图(linearlayout)。 我通过WindowManager.addView(view,Layout_Params)在活动中添加此视图; 但我有问题,edittext将生成的每个popup窗口(如复制/过去菜单或单词建议菜单)将在其他视图下,甚至在他们自己的EditText视图下(不在图片上,edittext具有透明背景) 我将会 我用这些布局参数创建视图(即:LinearLayout): protected WindowManager.LayoutParams createLayoutParams() { WindowManager.LayoutParams p = new WindowManager.LayoutParams(); p.gravity = Gravity.LEFT | Gravity.TOP; p.width = 0; p.height = 0; p.format = PixelFormat.TRANSLUCENT; p.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED; p.flags = NOT_FOCUSABLE_FLAGS; // TYPE_APPLICATION allows for popups in browser windows (like edit menus) p.type = WindowManager.LayoutParams.TYPE_APPLICATION; p.token = null; […]

跟踪视图添加到WindowManager(没有findViewById()函数?)

在我的服务中,我使用addView()向WindowManager添加一个视图。 当我准备隐藏视图时,我使用View引用调用removeView() 。 这很有效 – 大多数时候。 我偶尔会有Force Close报告,说View没有附加到WindowManager 。 这是有道理的。 问题是我认为该服务正在被Android杀死,当它是时候隐藏视图时,它会尝试在错误的View上删除View 。 我已经尝试检查View为null,但显然它不是在这一点上,它根本不是附加到WindowManager那个。 似乎如果View参考丢失,则无法再次访问它。 如何在WindowManager本身上获得等效的findViewById() ? 如果我的服务被停止(被杀死), View自动从WindowManager删除吗? 有没有办法可以存储对View的引用,这样如果服务停止,我仍然可以删除View (我也试图避免泄漏View )?

IllegalArgumentException:添加窗口后无法更改窗口types

我在这里尝试了建议, 这里的建议, 这里的建议,我在我的基础活动中注释掉了onAttachedToWindow()。 我有两个活动inheritance自这个类,BaseActivity。 一个运行,一个不运行。 可能有什么区别? 我的目标SDK是19; 将它改为12没有区别。 这是我的onCreate for BaseActivity: @Override protected void onCreate(Bundle savedInstanceState) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); requestWindowFeature(Window.FEATURE_NO_TITLE); super.onAttachedToWindow(); super.onCreate(savedInstanceState); …. } 当导航到第二个活动时,单步执行代码,它会通过onCreate(),onResume(),然后崩溃。 可能是什么问题呢? 堆栈跟踪: 06-26 13:41:57.963 28667-28667/com.assistek.ediary E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.assistek.ediary, PID: 28667 java.lang.IllegalArgumentException: Window type can not be changed after the window is added. at android.os.Parcel.readException(Parcel.java:1550) at android.os.Parcel.readException(Parcel.java:1499) […]

Android中“FLAG_BLUR_BEHIND”的替代?

我可以看到,当我使用API​​演示中显示的相同标志来模糊背景时,我得到一个警告,它已被弃用: “不推荐使用WindowManager.LayoutParams.FLAG_BLUR_BEHIND字段”。 我已经读过它了,我发现“不再支持模糊”了。 这是否意味着它不适用于未来的版本? 他们为什么弃用它? 还有其他选择吗? 我真的很喜欢这个function。

exceptionjava.lang.IllegalArgumentException:请求窗口android.os.BinderProxy@4205eb18不存在是什么意思

我正在尝试登录应用程序,但登录成功后即将进入下一个屏幕,它会重新启动。 以下是我认为会引起这种情况的例外,因为没有其他例外。 11-14 15:09:54.841: W/WindowManager(643): Failed looking up window 11-14 15:09:54.841: W/WindowManager(643): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@4205eb18 does not exist 11-14 15:09:54.841: W/WindowManager(643): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7622) 11-14 15:09:54.841: W/WindowManager(643): at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:7613) 11-14 15:09:54.841: W/WindowManager(643): at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1591) 11-14 15:09:54.841: W/WindowManager(643): at android.os.BinderProxy.sendDeathNotice(Binder.java:417) 11-14 15:09:54.841: W/WindowManager(643): at dalvik.system.NativeStart.run(Native Method) 11-14 15:09:54.841: I/WindowManager(643): WIN DEATH: null 任何人都可以告诉,它是什么意思,如果可能的话,如何纠正它。