gpt4 book ai didi

Android 在运行时确定屏幕方向

转载 作者:IT老高 更新时间:2023-10-28 23:08:10 26 4
gpt4 key购买 nike

这是一个检测屏幕旋转事件并决定保留或更改屏幕方向的伪代码。

public boolean onOrientationChanges(orientation) {
if(orientation == landscape)
if(settings.get("lock_orientation"))
return false; // Retain portrait mode
else
return true; // change to landscape mode

return true;
}

如何在 Android 中制作类似的东西?

编辑:我实际上正在寻找在哪里处理方向变化的答案。我不想通过添加 screenOrientation="portrait"来修复方向。

我需要一些类似于 onConfigurationChanges() 的东西,我可以在其中处理方向,但不需要我手动重绘 View 。

最佳答案

您首先需要一个 Display 实例:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

那么方向可以这样调用:

int orientation = display.getOrientation();

按照自己的方式检查方向并使用它来改变方向:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

希望对你有帮助。

更新:

好的,假设你有一个 oAllow var,它是 Boolean,默认值为 False

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getOrientation();
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
if(!oAllow) {
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
break;
case Configuration.ORIENTATION_LANDSCAPE:
if(!oAllow) {
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
break;
}
}

您可以添加更多选择。

我没有尝试这个示例,但至少告诉你一些关于如何解决的线索。如果您有任何错误,请告诉我。

更新

getOrientation() 已被弃用 see here .而是使用 getRotation()。要检查设备是否处于横向模式,您可以执行以下操作:

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();

int orientation = display.getRotation();

if (orientation == Surface.ROTATION_90
|| orientation == Surface.ROTATION_270) {
// TODO: add logic for landscape mode here
}

关于Android 在运行时确定屏幕方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com