gpt4 book ai didi

java - 禁用手机横向但允许平板电脑

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:03 24 4
gpt4 key购买 nike

所以普遍的共识是这样的;大多数人以纵向​​方式使用手机,而大多数人以横向方式使用平板电脑。根据哪个 Activity ,当您在手机上旋转到横向时,我的应用程序的布局会变得疯狂,考虑到用户不太可能在这里旋转并且没有理由这样做,不值得花时间修复。我知道 Activity 元素的 list 中的 ole orientation="portrait"技巧,但是这会将平板电脑用户锁定为不合适的纵向。我想在平板电脑用户的所有 Activity 中禁用纵向,同时在手机用户的大多数 Activity 中禁用横向。我试图通过制作一个 layout-large-land 文件夹而不是 layout-large 文件夹来加快速度,但这并不能阻止方向在平板电脑上发生变化。

最佳答案

如果您只是在代码中使用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT),您将在 Android 26+ 上看到有趣的效果。如果启用了系统自动旋转选项,并且您将手机横向放置并启动新 Activity ,它将以横向显示,然后在几秒钟内旋转为纵向。如果在 AndroidManifest 中设置 android:screenOrientation="portrait" 选项,您就不会捕捉到这种效果。但是没有办法在手机和平​​板电脑的 AndroidManifest 中设置不同的旋转选项。

如果您希望在手机上锁定纵向方向并在平板电脑上解锁自动旋转,有办法解决这个问题。

在项目中的每个 Activity 的 AndroidManifest 中设置选项 android:screenOrientation="locked"

<activity android:name=".SomeActivity"
android:screenOrientation="locked" />

where "locked"– 将方向锁定到其当前旋转,无论是什么。添加到 API 级别 18 from Android docs

然后在父BaseActivity中设置这样的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
int orientation = getResources().getConfiguration().orientation;
if (isTablet()) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else if(orientation != Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}

有几种方法可以检测当前设备是平板电脑。自己选择 isTablet() 方法的实现。

关于java - 禁用手机横向但允许平板电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50596476/

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