gpt4 book ai didi

android - 如何在android中仅在横向模式下旋转显示?

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

我希望我的 View 仅在横向模式下顺时针和逆时针旋转。

我读到了 android < 2.2 的唯一逆时针方向,这不是问题,我的应用程序现在是 +2.2。

我修改我的 list 以捕获配置更改

android:configChanges="keyboardHidden|orientation"

我覆盖我的 Activity 以捕获配置更改

@Override
public void onConfigurationChanged(Configuration newConfig) {

而且我知道如何捕捉方向

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int rot = display.getRotation();

但是...我不知道如何触发适当的横向方向,我正在这样做:

if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

但总是逆时针旋转:-(

如何设置左右横向?

编辑

如果我在 list 中设置方向:

android:screenOrientation="landscape"

Activity 的布局始终保持在“左横向”,我想在左右横向之间切换:S

最佳答案

如果您正在为 Android 2.3 及更高版本构建应用,则应将 manifest 属性设置为

android:screenOrientation="sensorLandscape"

您的应用将旋转到(左或右)横向位置。

如果您正在为 Android 2.2 及更早版本构建应用,但想在 Android 2.3 及更高版本上作为“sensorLandscape”配置运行,您可以尝试类似的方法

public static final int ANDROID_BUILD_GINGERBREAD = 9;
public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) {
setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
...

在我的案例中,这是处理横向变化的最佳方式。对于 Android 2.2 及更早版本,我无法找到任何更好的方式将屏幕旋转到左右横向。我尝试读取传感器方向并据此设置横向位置,但在我看来,只要您调用“setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);”传感器关闭(对于您的应用/Activity ),您无法通过传感器读取方向。

顺便说一句,您实际上并不需要覆盖“onConfigurationChanged(Configuration newConfig)”来让这些正常工作。

关于android - 如何在android中仅在横向模式下旋转显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377260/

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