0

我将带有 WindowManager 的相机叠加层添加到正在运行的 Activity 中。当我启动相机并调用 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 视图。相机工作正常。我在下面运行的活动是纵向的(应该如此),直到 WindowManager 实例将其转回横向。是的,我的清单中有肖像标签。

编辑:通过进一步调查,窗口管理器正在破坏并重新创建我正在运行的活动,这导致一切恢复为横向模式。我什至尝试在 Activity 的 onCreate 中动态设置方向,但这也不起作用。当我使用上述所有窗口管理器代码停止服务时,我的活动将返回纵向模式。

4

1 回答 1

-2
      android:screenOrientation="portrait"
      android:configChanges="orientation|keyboardHidden"

尝试在您的清单中的活动下定义它。

于 2016-12-02T22:31:39.360 回答