gpt4 book ai didi

android - 锁定屏幕旋转取决于屏幕尺寸

转载 作者:行者123 更新时间:2023-11-29 17:44:46 27 4
gpt4 key购买 nike

我正在开发一个应用程序,如果设备是平板电脑,则需要锁定为横向,如果设备是手机,则需要锁定为纵向。除了检查每个 Activity 启动之外,还有什么干净的方法可以做到这一点吗?

最佳答案

两年后我找到了这篇文章。我必须做完全相同的事情,这就是我所做的:

1 - 不要在 AndroidManifest.xml 中的任何位置声明 screenOrientation 属性。
2 - 创建文件夹 res/layoutres/layout-w600dp
3 - 创建文件夹 valuesvalues-w600dp
4 - 使用以下内容创建 values/layout.xml:

<resources>
<bool name="isTablet">false</bool>
</resources>


5 - 将相同的文件添加到 values-w600dp 并将 isTablet 更改为 true:

<resources>
<bool name="isTablet">true</bool>
</resources>


6 - 在每个 Activity 中检索此值并根据设备是否为平板电脑更改旋转:

// Locks the screen orientation to horizontal if it's a tablet
if (context.getResources().getBoolean(R.bool.isTablet)){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

// Locks the screen orientation to vertical if it's a smartphone
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}

重要:由于我们之前没有指定screenOrientation属性,每次加载 Activity 时,Android 都会首先搜索适合设备当前方向的布局,甚至在 Activity 有任何时间运行您的屏幕方向更改代码之前,如果找不到它就会失败。

例如,假设您不想允许纵向。如果在您启动应用程序或启动新 Activity 时设备处于纵向布局,它将首先为该 Activity 搜索纵向布局,然后执行您的屏幕方向更改代码段并最终将纵向布局更改为横向布局。虽然它会执行得非常快,所以您不会注意到,但它仍然需要找到纵向布局,否则它会崩溃。

因此,您必须通过在布局文件夹名称中不使用 landport 密度限定符来让系统找到这两种布局,或者,如果有必要,请同时提供这两种布局一个 layout-land 和一个 layout-portrait 文件夹,其中包含每个布局,即使它们是重复的。

关于android - 锁定屏幕旋转取决于屏幕尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27428844/

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