gpt4 book ai didi

Android 在水平和垂直方向上适合所有设备布局的正确方法

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

你好我想问一下调整所有移动设备和平板电脑布局的最有效方法有时我不能使用wrap_contentlayout_weight 我在 java 中将大小设置为设备大小的某个百分比,如下所示:

   ImageView img;
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
img.getLayoutParams().width = width* 7 / 10;

当旋转屏幕时,我使用这种方法来改变百分比

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE&& getResources().getBoolean(R.bool.isTablet)) {
width=(int) (width * 0.7);
}

我在问这个过程是否比针对每个屏幕尺寸/方向使用多个 XML 文件更有效

最佳答案

其实要看场景。有时维护 xml 是高效和容易的有时动态计算是必要的。你可以通过链接 https://developer.android.com/guide/practices/screens_support.html .它会给你一些想法。在上面的宽度/高度计算代码中,有时您可能无法获得某些设备的正确结果。下面是将在运行时准确支持所有版本的 android 设备分辨率(宽度、高度)的代码。

private void calculateDeviceResolution(Activity context) {
Display display = context.getWindowManager().getDefaultDisplay();

if (Build.VERSION.SDK_INT >= 17) {
//new pleasant way to get real metrics
DisplayMetrics realMetrics = new DisplayMetrics();
display.getRealMetrics(realMetrics);
realWidth = realMetrics.widthPixels;
realHeight = realMetrics.heightPixels;

} else if (Build.VERSION.SDK_INT >= 14) {
//reflection for this weird in-between time
try {
Method mGetRawH = Display.class.getMethod("getRawHeight");
Method mGetRawW = Display.class.getMethod("getRawWidth");
realWidth = (Integer) mGetRawW.invoke(display);
realHeight = (Integer) mGetRawH.invoke(display);
} catch (Exception e) {
//this may not be 100% accurate, but it's all we've got
realWidth = display.getWidth();
realHeight = display.getHeight();
Constants.errorLog("Display Info", "Couldn't use reflection to get the real display metrics.");
}

} else {
//This should be close, as lower API devices should not have window navigation bars
realWidth = display.getWidth();
realHeight = display.getHeight();
}
}

关于Android 在水平和垂直方向上适合所有设备布局的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41320246/

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