Android WindowManager更改屏幕方向

时间:2016-12-02 19:23:46

标签: android android-layout android-windowmanager android-layoutparams

我将带有WindowManager的相机覆盖添加到正在运行的Activity中。当我启动相机并调用WindowManager时,它会将我的屏幕从纵向更改为横向,即使我已将相应的纵向标记分配给WindowManager.LayoutParams。 Haven已经能够通过谷歌找到任何解决方案。

这是我在服务中的方法中运行的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实例将其转回横向。是的,我的Manifest中有肖像标签。

编辑:经过进一步调查,windowmanager正在销毁并重新创建我正在运行的活动,这导致所有内容恢复为横向模式。我甚至尝试在活动的onCreate中动态设置方向,但这也不起作用。当我使用上述所有windowmanager代码停止服务时,我的活动将返回到纵向模式。

1 个答案:

答案 0 :(得分:-2)

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

尝试在活动中的清单中定义此内容。