当前位置: 首页 > 知识库问答 >
问题:

Android WindowManager更改屏幕方向

翁和正
2023-03-14

我正在向运行的activity添加一个带有WindowManager的相机覆盖。当我启动相机并调用WindowManager时,它将我的屏幕从纵向变为横向,即使我为WindowManager.LayoutParams分配了适当的纵向标记。还没能通过谷歌找到任何解决方案

下面是我在服务中的方法中运行的WindowManager代码:

inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    View view;

    view = inflater.inflate(R.layout.camera, null, false);

    p = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);

    p.gravity = Gravity.TOP | Gravity.CENTER;
    p.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

    windowManager.addView(view,p);

布局r.layout.camera只是我将相机添加到的FrameLayout视图。摄像头工作正常。我在下面运行的activity是肖像(应该是这样的),直到WindowManager实例将其转回景观。是的,我的舱单上有肖像标签。

编辑:随着进一步的调查,windowmanager正在破坏和重新创建我的activity运行,这是导致一切恢复到景观模式。我甚至尝试在activity的onCreate中动态地设置定向,但那也不起作用。当我用上述所有windowmanager代码停止服务时,我的activity将返回到肖像模式。

共有1个答案

潘阳舒
2023-03-14
      android:screenOrientation="portrait"
      android:configChanges="orientation|keyboardHidden"

试着在你的舱单activity下定义这一点。

 类似资料:
  • 我有一个片段,我有一个listview。当我按下listview position时,我打开片断对话框,在其中我发送所单击项目的位置。在那里,我可以从ListView实时更改一些数据。但是当我改变我的方向(片段和对话框片段都有不同的布局)时,live更改不再起作用。如果我去另一个片段,比回来,改变是做了,但不是活着。 两者都将SetRetaInstance设置为true。 在片段中设置适配器: 对

  • 我有两台显示器;创建 LWJGL 窗口时: 它总是出现在我的左侧屏幕上。是否有一个参数可以设置以更改它出现在哪个屏幕上,例如:

  • 我有一个可折叠的导航条构建与bootstrap 4。我使用了col-sm-2和navbar-expand-sm来使它以相同的屏幕尺寸折叠成一个汉堡包,它应该占据整个宽度。 问题是在sm屏幕尺寸以上,我希望它有h-100,所以它是一个侧栏,但作为sm/xs,我希望它只是占用拨动按钮所需的空间。 有没有办法用bootstrap来实现这一点,或者我被困在jquery中添加/删除h-100类?

  • 我正在开发一款新游戏,我正在用LibGDX实现屏幕。 我对触摸屏和触摸屏的结合有点迷恋。 我的渲染方法中包含以下内容: 目前我有4个不同的屏幕,当isTouch被触发时,它们都发生了变化,问题是在我触摸第一个屏幕一次后,它从屏幕1变成了4。我试图将输入处理器设置为空,但它仍然从屏幕1跳到4,而无需在每个屏幕上等待。屏幕1上的触摸似乎也会在屏幕2 3和4上自动触发。如何重置输入处理器或在下一个屏幕加

  • 我需要你的帮助:两个月前,我的Ionic 2应用程序工作正常,使用ScreenOrientation cordova插件,代码如下: 在一台新笔记本电脑中,我安装了最新的Ionic 2版本和最新版本的cordova ScreenOrience插件,并且使用相同的应用程序代码,我在编译时收到了这个错误: 类型“string”上不存在属性“type”。 我尝试使用ScreenOrientation插件

  • 我有一个以编程方式创建片段的活动。该片段内部有另一个片段。 活动包含片段A。片段A包含片段B。 如果(savedInstanceState==null){ } 但对我不起作用! null null 活动: 片段: