这是 API 18 中的一个功能,我无法让它真正锁定。我一直在阅读如何手动处理自己的配置更改,并尝试了很多东西,但我目前的代码无效。
目标:我需要有一个活动,在用户拍摄视频(将他们带回应用程序)后,着陆页应该是横向或纵向的,无论用户以哪种方式握住手机。但是如果他们决定去横向,我想锁定那个位置,所以他们不能回到纵向(如果他们回去会导致视频观看错误)。所以他们一开始有一个选择,但如果他们选择那个,就必须留在风景中。但是我该怎么做呢?
这是我到目前为止所尝试的:
将其
android:configChanges="keyboardHidden|orientation|screenSize"
放在<activity>
清单中我的活动标签中。用这个覆盖
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); } }
我有 2 种 xml 布局,一种用于布局文件夹中的肖像,另一种用于 layout-land 文件夹中的风景。
我得到的结果是我可以让布局在方向改变时显示,但我不能让它锁定。我正在使用带有 的设备KitKat
,所以它应该锁定在那里,但它没有。
我在这里读过的关于锁定方向(或解决方法)的每一篇文章似乎都有 3 或 4 年的历史,并且基本上暗示了我已经在尝试的内容。任何人有任何新信息吗?
谢谢。