【问题标题】:Android set orientationAndroid设置方向
【发布时间】:2021-03-30 06:16:31
【问题描述】:

我有一个奇怪的安卓设备,它没有重力传感器,在那个设备上, 我的“设置方向”功能什么也不做。在所有其他设备上,包括一些 没有传感器,以下工作正常。

        Activity act = AndroidNativeUtil.getActivity();
    int newo = portrait 
        ?   (reverse
                ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
                : ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
        :   (reverse
                ? ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
                : ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    act.setRequestedOrientation(
            newo

是否有一些额外的 API 可以锁定屏幕方向?一些 其他应用成功更改屏幕方向。

【问题讨论】:

  • 纵向与横向是否不起作用?还是只是纵向/反向纵向?
  • 在我的应用程序中,没有发生旋转。使用第 3 方旋转器应用程序,反向横向不起作用,但其他 3 个方向起作用。
  • 传感器的存在与方向支持无关。默认的 android 屏幕有 3 个轴映射到显示面板/设备主体。 setRequestedOrientation() 应该可以工作,除非设备的制造商提供了这个 API 的非常糟糕的实现。
  • 您是否检查过该设备的方向是否已锁定?那可能是一个永远不会改变方向的设备(如果有类似的东西)?看看这个:stackoverflow.com/questions/34636464/…
  • 您也可以查看“Paul”的答案,他描述了不同 API 版本的不同方向常量:stackoverflow.com/questions/18268218/…

标签: android orientation sensors


【解决方案1】:

检查方向

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
    Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}

如何锁定方向?

public class OrientationUtils {
private OrientationUtils() {}

/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

/** Allows user to freely use portrait or landscape mode. */
public static void unlockOrientation(Activity activity) {
    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

}

【讨论】:

  • 这看起来就像我已经在做的一样,没有效果。
【解决方案2】:

android:screenOrientation="locked" 怎么样。这会将方向锁定为其当前旋转(From API 18)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多