我正在尝试构建自定义相机应用程序。我有一个为相机预览扩展SurfaceView的类。当设备改变方向时,该表面被破坏并重新创建,导致明显的“故障”,从而降低用户体验。Android:保留相机预览方向更改,而其他视图可以旋转
我想要做的就是防止在取向改变时重新创建相机预览。另外,我想在这个预览上覆盖一些按钮(例如,闪光灯,前/后相机的选择等),其将在方向改变时旋转。这类似于股票相机应用做什么:
Stock camera in landscape mode.
Stock camera in portrait mode. Note that buttons rotate on orientation change.
我发现(例如描述,here)最好的方法是使用清单文件中的活动方向,以迫使景观,拍摄照片后,根据实际的设备方向旋转结果图像。据我所知,这种方法的缺点是这也会阻止重叠按钮的旋转。另外,正如我已经读了一些关于使用片段和保留片段实例,我想知道我是否可以通过保留包含相机预览的片段(是的,我是一个noob)来实现我的目标。
什么是正确的方法来做到这一点?
谢谢。你说股票相机应用程序“通过更改按钮和其他UI元素来伪造肖像方向”,他们是如何做到的?我猜他们在清单中为此活动设置了'android:screenOrientation =“landscape”',但是如何旋转UI元素呢? – nerdelicious
他们有一个OrientationListener,当他们检测到设备已转向纵向时,他们旋转按钮图标。你可以在开源库存[Camera app](https://android.googlesource.com/platform/packages/apps/Camera.git)和[Open camera](https://github.com)/almalence/OpenCamera) –
与听众的股票摄像头似乎是最好的方法。但是,是否有任何可用的解决方案来使用OrientationListener旋转状态栏(通知,电池等)? – Fllo