android - Android 中可能的最小屏幕宽度是多少?

标签 android android-resources android-screen-support

我正在尝试根据最小宽度属性加载一些图像。为此,我将图像放入以下文件夹:

drawable-sw320dp 
drawable-sw360dp
drawable-sw480dp 
drawable-sw600dp 
drawable-sw720dp

但我想知道最小尺寸应该是多少才能避免运行时崩溃。如果最小宽度为 240 的设备(如果存在)运行我的应用程序(它可能在运行时崩溃),会发生什么情况?我可以创建一个名为

的文件夹吗
drawable-sw0dp

并在其中放入一些图像,以便如果最小宽度属性在 0 到 320 之间,则加载这些图像?

我可以像下面这样以编程方式执行此操作,但我想知道我是否可以在不需要编写任何代码的情况下执行此操作。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int widthPixels = metrics.widthPixels;
int heightPixels = metrics.heightPixels;
float scaleFactor = metrics.density;
float widthDp = widthPixels / scaleFactor;
float heightDp = heightPixels / scaleFactor;
float smallestWidth = Math.min(widthDp, heightDp);

if (smallestWidth < 320) {
    //Load necessary images
} 
else if (smallestWidth >= 320 && smallestWidth < 360) {
    //Load necessary images
}else if (smallestWidth >= 360 && smallestWidth < 480) {
    //Load necessary images
}else if (smallestWidth >= 480 && smallestWidth < 600) {
    //Load necessary images
}else if (smallestWidth >= 720) {
    //Load necessary images
}

最佳答案

您应该根据屏幕密度对图像进行分类。不是 基于屏幕宽度。

屏幕密度有几种类型:-

ldpi ~ 120dpi

mdpi ~ 160dpi

hdpi ~ 240dpi

xhdpi ~ 320dpi

xxhdpi ~ 480dpi

xxxhdpi ~ 640 dpi

每个设备仅在它们之间分类。

他们的文件夹是这样的:-

drawable-ldpi

drawable-mdpi

drawable-hdpi

drawable-xhdpi

drawable-xxhdpi

drawable-xxxhdpi

ldpi 中最小屏幕密度的图像。 xxxhdpi 中最大屏幕密度的图像。

其他事情由android自己管理。它将根据屏幕密度加载正确的图像

永远记住 mdpi 被称为基线。即 1:1 比例,在 mdpi 中,1 px = 1dp。

关于android - Android 中可能的最小屏幕宽度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32309258/

相关文章:

android - Robolectric 在尝试访问原始文件夹中的资源时抛出 Resources$NotFoundException

android - "dynamically modify resource tables"在Android应用程序中究竟意味着什么

android - 另一个类中的错误 getResource()

java - Android 不会根据不同的屏幕布局调整大小

android - 讲解drawable、drawable-ldpi、drawable-mdpi和drawable-hdpi的区别

android - Android中大量数据的ListView的动态高度

java - 从 Android 中的动态 json 获取值

android - 如何将此文本添加到 Android Studio 中的 xml 文件中?

java - Sqlite 数据库检索数据到 arraylist

Android 模拟器使用了错误的布局资源