我将带有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代码停止服务时,我的活动将返回到纵向模式。
答案 0 :(得分:-2)
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
尝试在活动中的清单中定义此内容。