Android 如何在不同大小的安卓设备上创建外观完美的用户界面

Android 如何在不同大小的安卓设备上创建外观完美的用户界面,android,Android,有许多不同尺寸的Android设备可用,所以我想知道如何创建UI,使其在不同尺寸的设备上看起来完全符合像素比例。我试着用谷歌搜索,但没有找到同样的结果,结果只涉及处理图像,而不是对齐。目前,我使用的dimens文件结合了密度和软件配置,但由于相同大小存储桶中的设备具有不同的大小,因此它看起来并不完美。我们的web团队在webview应用程序上处理它,它在那里看起来很完美,但如何在本机应用程序中实现同样的效果?我们如何创建UI,使其在不同设备上看起来相同?任何帮助都将不胜感激。首先,各位,这是一个

有许多不同尺寸的Android设备可用,所以我想知道如何创建UI,使其在不同尺寸的设备上看起来完全符合像素比例。我试着用谷歌搜索,但没有找到同样的结果,结果只涉及处理图像,而不是对齐。目前,我使用的dimens文件结合了密度和软件配置,但由于相同大小存储桶中的设备具有不同的大小,因此它看起来并不完美。我们的web团队在webview应用程序上处理它,它在那里看起来很完美,但如何在本机应用程序中实现同样的效果?我们如何创建UI,使其在不同设备上看起来相同?任何帮助都将不胜感激。

首先,各位,这是一个合理的UI开发问题。虽然有很多问题和答案,但是所有的答案都是模棱两可的。在这里,我只是试图回答马里奥到底问了什么,而不是解决任何彻底的设计建议

我们如何创建UI,使其在不同设备上看起来相同

你不能。设备没有相同的纵横比。例如,1920*1080设备的纵横比为16*9,而1280*800设备的纵横比为16*10。如果你试图在16*10的屏幕上显示一个16*9的图像,它会被拉伸到一边。因此,不可能跨设备显示精确的UI,因为至少它们具有不同的纵横比。一些著名的纵横比是16*9/16*10/1024*600/18*9/19*9/19.5*9/20*9

如何为本机应用程序实现同样的功能

这是一个非常普遍的问题。比如如何创建应用程序。如果您正在寻找一种快速解决方案,如何使您的内容在不同的设备上看起来大致相同,您必须为不同的屏幕创建不同的布局,这很费时,但可以更好地控制设计,或者为在适当尺寸文件中定义的所有测量创建一个不同尺寸的布局,这是一个更快的修复


要想知道更多,你应该在谷歌上搜索得更好一点;有很多指导方针和答案。

有很多方法可以做到这一点

1> 使用约束布局:

2> 使用下面提到的库。您可以在gradle中使用它,也可以从github演示项目下载包含dimen文件的所有值文件夹,然后将它们粘贴到您的项目中。这将很好地满足您的需要

implementation 'com.intuit.sdp:sdp-android:1.0.6'
3> 最后,通过计算屏幕大小和宽度,然后计算视图的高度和宽度,并使用布局管理器进行设置。虽然这是一个非常耗时的过程

建议使用前两个步骤,这两个步骤更容易实现


如果需要进一步帮助,请告诉我。

使用Sdp github库,根据移动屏幕,它是可销售的dp

implementation 'com.intuit.sdp:sdp-android:1.0.6'

对于sdp min sdk为19及更高版本

尝试使用度量并根据dpi比率调整对象的大小,尽管这不是一个完美的解决方案,但至少您可以为标准大小和最流行的大小设置一些逻辑

            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            mXDpi = metrics.xdpi;
            mYDpi = metrics.ydpi;

你能展示一下你想要实现的目标吗?正如我在问题中提到的,我已经为每个配置创建了不同的dimens文件。例如dimens-sw320dp,dimens-sw360dp,dimens-sw480dp。我想你必须检查一下:这里有一个库声称它可以解决你的问题。检查一下它是否可以帮助android SDK提供一个新的大小单位——sdp可伸缩dp。此大小单位随屏幕大小缩放。它可以帮助Android开发者支持多屏幕。SDP-一种可伸缩的尺寸单位