【发布时间】:2019-06-22 17:01:47
【问题描述】:
我有一个布局,我目前通过覆盖onConfigurationChanged 并根据所选方向排列视图来支持方向更改。试图通过从最小化/展开视图按钮触发相同的功能来支持相同的功能,但是方向更改会被新旧方向调用两次。
我有 adjustConfig(int orientation) 方法,它负责移动视图、隐藏/显示需要的内容 - 它完成了这项工作。
@Override
public void onConfigurationChanged(Configuration newConfig) {
adjustConfig(newConfig.orientation);
super.onConfigurationChanged(newConfig);
//since fullScreeBtn blocks the orientation sensors, we enable it back
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
public void adjustConfig (int orientation) {
// do some hide/show work based on the orientation type
}
fullScreeBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setRequestedOrientation(
getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE ?
ActivityInfo.CREEN_ORIENTATION_PORTRAIT :
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
我有一个全屏/最小化按钮,可以调用
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 或
setRequestedOrientation(ActivityInfo.CREEN_ORIENTATION_PORTRAIT) 基于我想要更改的方向并依次触发 onConfigurationChanged 处理我的配置,到目前为止一切都很好,但问题是,例如,如果我在肖像上并单击按钮进行切换对于横向,流程工作并以新的横向配置启动onConfigurationChanged,这会进行更改,但随后立即以当前模式再次调用onConfigurationChanged,我最终以初始状态 - 再次纵向。
编辑:目前代码的工作方式是,您可以从物理旋转手机开始,然后在纵向和横向之间来回切换,或者点击最小化/全屏,但不能同时点击两者,因为我打电话的那一刻
setRequestedOrientation 在fullScreeBtn 它强制方向并禁用传感器侦听,所以当我点击全屏时它会根据需要旋转屏幕,然后我会旋转手机以查看它,但从这一点开始我被卡住了因为我无法物理旋转回来,只能通过再次单击最小化图像。
我的目标是同时支持传感器和手动选项,所以如果我点击fullScreeBtn,它将切换到横向模式,用户需要旋转手机来调整舒适的视图,就像YouTube 今天也是如此。
【问题讨论】:
标签: android orientation