安卓屏幕方向 : lock only parts of the layout

标签 android android-layout

我正在构建一个使用相机预览的相机应用程序。为了使用全屏预览,我用

锁定了 Activity
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

现在我遇到以下问题:每当我呈现表单或必须显示对话框时,它总是以横向模式显示,即使用户在纵向模式下使用他/她的设备也是如此。 我尝试使用变换动画来旋转 edittext View ,并且它们已正确旋转,但我仍然无法再聚焦它们,而且键盘也总是横向显示:(

你知道绕过这里的任何方法吗?

重要提示:检测方向不是这里的问题。问题是:如何以仍然可用的方式旋转表单/ View / View 组和键盘。

我知道它必须以某种方式成为可能:三星的相机应用程序(随 galaxy S3 提供)能够在不旋转预览的情况下旋转 View ,所以它必须成为可能! 见:

http://www.letsgomobile.org/images/reviews/0186/galaxy-s3-camera.jpg

http://cdn2.mos.techradar.futurecdn.net//art/mobile_phones/Samsung/GalaxyS3/Galaxy%20Fire/Samsung_Galaxy_S3_25-580-100.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/

相关文章:

android - 具有重力和权重的 LinearLayout

android - 在微调器中无法选择项目(自定义微调器适配器)

android - 如何阻止连接到 AWS RDS 实例的不需要的设备?

android - 更新后无法在Android上运行Flutter项目

java - gridview setOnItemClickListener 不起作用

android - 我如何捕获图像并保存在我的 Activity 中的 ImageView 中?

android - onKeyPreIme 不调用

android - 最有指导意义的开源 Android 项目?

java - android中传感器的后台服务

android - 如何在android中读取XML文件