Cap*_*erd 3 android landscape-portrait
我正在开发具有内嵌视频播放器的应用程序。我需要重现 Youtube 的全屏行为。
当用户横向旋转设备时,我通过 onConfigurationChanged 捕获它并进行相应的布局修改。
但是,我也有一个按钮来设置全屏。我需要这个按钮去 landscpe(ergo,全屏),但不要通过传感器锁定方向变化。
这是我目前在 onConfigurationChanged 上所做的:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.isLandscape(newConfig.orientation)){
this.goToFullScreenMode();
}else{
this.goToInlineMode();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在按钮中所做的但失败了,因为它将活动锁定在横向:
this.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)
我需要的是进入横向模式,但允许用户使用传感器更改回纵向模式,就像 Youtube 那样。
我可以通过锁定横向直到设备水平(通过直接从传感器读取)然后再次解锁方向来做到这一点。我不认为这是最“正确”的做法。
来自未来派 2016 年的问候。
生活的道路让我回到了另一个 Android 应用程序的同样困境,我发现问题的真正答案是简单地添加这个......
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
Run Code Online (Sandbox Code Playgroud)
...在将方向设置为所需设置后立即。
这是我自己以前的答案
由于缺乏答案,并且因为我无法以优雅的方式解决这个问题,我最终结束了使用 OrientationListener 来获取设备的原始度数。
有了这个,一旦设备像实际布局一样定位,我就能够释放用户的方向配置。
如果有人有兴趣了解有关它的更多信息,请告诉我。
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |