我正在构建一个使用相机预览的相机应用程序。为了使用全屏预览,我用
锁定了 ActivitysetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
现在我遇到以下问题:每当我呈现表单或必须显示对话框时,它总是以横向模式显示,即使用户在纵向模式下使用他/她的设备也是如此。 我尝试使用变换动画来旋转 edittext View ,并且它们已正确旋转,但我仍然无法再聚焦它们,而且键盘也总是横向显示:(
你知道绕过这里的任何方法吗?
重要提示:检测方向不是这里的问题。问题是:如何以仍然可用的方式旋转表单/ View / View 组和键盘。
我知道它必须以某种方式成为可能:三星的相机应用程序(随 galaxy S3 提供)能够在不旋转预览的情况下旋转 View ,所以它必须成为可能! 见:
http://www.letsgomobile.org/images/reviews/0186/galaxy-s3-camera.jpg
最佳答案
Samsung Camera 应用程序正在使用带有方向传感器的方向更改监听器。如果用户通过设置阻止设备旋转,旋转仍然会发生。
您将需要创建完整的自定义小部件,因此您不能在对话框中使用构建,您必须显示一个 CustomDialog ....
基本思路是使用 OrientationEventListener 和 SensorManager。在 Device Rotation 上,您必须更新 UI 并使用新方向旋转 View 。这是使用 OrientationEventListener 的教程 How to use OrientationEventListener 在大多数相机应用程序上,该 Activity 在风景上仍然被阻止。 所有相机应用程序都采用此技巧来简化 SurfaceView 大小随旋转而变化的处理。
关于安卓屏幕方向 : lock only parts of the layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935267/