gpt4 book ai didi

android - 仅为大型设备更改布局方向

转载 作者:行者123 更新时间:2023-11-29 19:38:32 25 4
gpt4 key购买 nike

我正在开发的 Android 应用程序仅在屏幕尺寸超过 7 英寸时才需要更改屏幕布局。我为 land 和 portrait 模式的 large 和 xlarge 创建了不同的布局。这似乎运作良好。

我使用以下代码来确定屏幕尺寸并相应地更改布局:

public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

int width = dm.widthPixels, height = dm.heightPixels;
double dd = Math.sqrt(width * width + height * height)/dm.densityDpi;
double diagonal = (dd >= (Math.floor(dd) + 0.5) ? Math.ceil(dd) : Math.floor(dd));

if (diagonal < 7) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}

问题:
7 英寸以下屏幕的布局也更改为横向模式。上面的代码无法阻止更改。请记住,还创建了 7 英寸以下的布局。

我在这里做错了什么?

最佳答案

这里有两个因素,第一个是你的布局文件夹,第二个是你的代码,当你想为不同的屏幕表示不同的布局时,你应该使用 layout, layout -sw600dplayout-sw720dp。在这种情况下,文件夹 layout 中的布局是小于 7in 的设备的布局,layout-sw600dp' 表示最小尺寸为 7 的设备的布局'in 和文件夹 layout-720dp' 表示大于 7in 和 10`in 设备的布局。

第二个因素是将方向应用于这些布局,这可以在使用 Configuration.classonCreate() 方法中轻松发生:

    Configuration conf = getResources().getConfiguration();
if (conf.smallestScreenWidthDp >= 600) { // now it is at least a tablet with 7'in
if (conf.smallestScreenWidthDp >= 720) { // now it is a 10'in tablet
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); // Or portrait
} else { // now it is a 7'in tablet
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
} else { // now it is a regular device below 7`in
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}

关于android - 仅为大型设备更改布局方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951705/

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