gpt4 book ai didi

android - ActivityInfo.SCREEN_ORIENTATION_LOCKED 未锁定方向 - Android

转载 作者:行者123 更新时间:2023-11-30 02:15:48 30 4
gpt4 key购买 nike

这是 API 18 中的一项功能,我无法真正锁定它。我整晚都在阅读如何手动处理您自己的配置更改,并尝试了很多东西,但我目前的代码无效。

目标:我需要有一个 Activity ,在用户拍摄视频(将他们带回应用程序)之后,着陆页应该是横向或纵向,无论哪种方式用户拿着电话。但是如果他们决定去风景,我想锁定那个位置,这样他们就不能回到肖像(如果他们回去会导致视频观看错误)。所以他们一开始有选择,但如果他们选择那个,就必须留在风景中。但我该怎么做呢?

到目前为止,这是我尝试过的:

  1. 将这个android:configChanges="keyboardHidden|orientation|screenSize"<activity>我在 list 中的 Activity 标签。

  2. 覆盖 onConfigurationChanged()方法:

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

    if (getResources().getConfiguration().orientation ==
    Configuration.ORIENTATION_LANDSCAPE) {
    setContentView(R.layout.activity_make_photo_video_land);
    } else {
    setContentView(R.layout.activity_make_photo_video);
    }

    if (this.getResources().getConfiguration().orientation ==
    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE && Build.VERSION.SDK_INT
    >= Build.VERSION_CODES.JELLY_BEAN_MR2){
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    }
    }
  3. 我有 2 个 xml 布局,一个用于 layout 文件夹中的肖像,一个用于 layout-land 文件夹中的风景。

我得到的结果是,我可以让布局在方向更改时显示,但我无法将其锁定。我正在使用 KitKat 的设备,所以它应该锁定在那里,但它没有。

我在这里读到的关于锁定方向(或它的变通方法)的每一篇文章似乎都已有 3 或 4 年历史,基本上暗示了我已经在尝试的东西。有任何新信息吗?

谢谢。

最佳答案

你试过这个吗?

public static void lockOrientation(Activity activity) {
Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
int currentOrientation = activity.getResources().getConfiguration().orientation;
int orientation = 0;
switch(currentOrientation)
{
case Configuration.ORIENTATION_LANDSCAPE:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
break;
case Configuration.ORIENTATION_PORTRAIT:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
activity.setRequestedOrientation(orientation);
}

public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}

关于android - ActivityInfo.SCREEN_ORIENTATION_LOCKED 未锁定方向 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29364621/

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