我想在视频播放器中点击"全屏"按钮时模仿YouTube Android应用的行为:
似乎如果我使用以下方法强制旋转横向或纵向:
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)
要么
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Run Code Online (Sandbox Code Playgroud)
...我立即失去了检测传感器方向变化的能力(即一旦用户处于风景中,他们想要手动将设备旋转回肖像).
如果我在onConfigurationChanged中将请求的方向更改为未指定的方向或传感器,则方向会暂时翻转为横向/纵向(无论我从上方请求),然后快速回到与设备保持方式相匹配的方向.
关于如何实现上述目标的任何想法?
hav*_*chr 19
我有同样的问题.我最终得到的是使用OrientationListener来检测用户何时实际将手机倾斜为横向,然后将方向设置为SCREEN_ORIENTATION_SENSOR.
OrientationEventListener orientationEventListener =
new OrientationEventListener(getActivity()) {
@Override
public void onOrientationChanged(int orientation) {
int epsilon = 10;
int leftLandscape = 90;
int rightLandscape = 270;
if(epsilonCheck(orientation, leftLandscape, epsilon) ||
epsilonCheck(orientation, rightLandscape, epsilon)){
getMainActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
private boolean epsilonCheck(int a, int b, int epsilon) {
return a > b - epsilon && a < b + epsilon;
}
};
orientationEventListener.enable();
Run Code Online (Sandbox Code Playgroud)
以下是OrientationEventListener的文档:文档
您还需要添加纵向检查,因为您在原始帖子中描述了需要.
小智 5
大 tnx 到 havch
它是黄金,我在上面坚持了 5 个小时。这是我的 kotlin 代码来处理它。
orientationEventListener = object: OrientationEventListener(this) {
override fun onOrientationChanged(orientation: Int) {
val isPortrait = orientation > 300 || orientation < 60 || orientation in 120..240
if ((requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT && isPortrait) ||
(requestedOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && !isPortrait)){
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR
}
}
}
orientationEventListener.enable()Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |