Android 中的最小屏幕宽度是多少?
What is the smallest possible screen width in Android?
我正在尝试根据最小宽度属性加载一些图像。为此,我将图像放入以下文件夹:
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中表示,1px = 1dp.
我发现drawable-sw320dp文件夹没用了。我将图像放在 drawable 和 drawable-sw320dp 文件夹中,运行 它放在最小宽度为 320 dp 的设备上。系统从 drawable 文件夹而不是 drawable-sw320dp 文件夹加载图像。因此,看起来 320dp 是 android 中可能的最小宽度,您需要将图像放入此类设备的可绘制文件夹中。
您需要将其他图像文件放在可绘制文件夹中。不需要创建sw0dp文件夹,会被忽略
drawable-sw0dp
是 Android 资源的有效文件夹名称,所以是的,您可以将资源放在那里,它们将优先于 [=11= 中同名的资源] 文件夹,根据 official documentation。由于所有 Android 设备的 最小宽度 等于或大于 0,因此 sw0dp
选择器将 不 排除任何他们。
那么,为什么要使用 drawable-sw0dp
文件夹,为什么不直接使用 drawable
文件夹呢?假设您有一个智能手机和平板电脑项目,其中一些资源是相同的,而另一些则不是。您可以将所有公共资源放在 drawable
文件夹中,将所有 "specific" 资源放在 drawable-sw0dp
(对于智能手机)和 drawable-sw600dp
(对于平板电脑)文件夹中。这样,您就可以很方便地检查这两个文件夹中包含的文件数量和名称是否相同,并且可以清楚地看到哪些资源是"universal",哪些不是。
总而言之,这只是可读性的问题。如果将所有 "universal" 和智能手机资源放在 drawable
文件夹中,将平板电脑资源放在 drawable-sw600dp
文件夹中(这是更直观的方法),一切都会完全一样,所以它是真的取决于你。
我正在尝试根据最小宽度属性加载一些图像。为此,我将图像放入以下文件夹:
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中表示,1px = 1dp.
我发现drawable-sw320dp文件夹没用了。我将图像放在 drawable 和 drawable-sw320dp 文件夹中,运行 它放在最小宽度为 320 dp 的设备上。系统从 drawable 文件夹而不是 drawable-sw320dp 文件夹加载图像。因此,看起来 320dp 是 android 中可能的最小宽度,您需要将图像放入此类设备的可绘制文件夹中。
您需要将其他图像文件放在可绘制文件夹中。不需要创建sw0dp文件夹,会被忽略
drawable-sw0dp
是 Android 资源的有效文件夹名称,所以是的,您可以将资源放在那里,它们将优先于 [=11= 中同名的资源] 文件夹,根据 official documentation。由于所有 Android 设备的 最小宽度 等于或大于 0,因此 sw0dp
选择器将 不 排除任何他们。
那么,为什么要使用 drawable-sw0dp
文件夹,为什么不直接使用 drawable
文件夹呢?假设您有一个智能手机和平板电脑项目,其中一些资源是相同的,而另一些则不是。您可以将所有公共资源放在 drawable
文件夹中,将所有 "specific" 资源放在 drawable-sw0dp
(对于智能手机)和 drawable-sw600dp
(对于平板电脑)文件夹中。这样,您就可以很方便地检查这两个文件夹中包含的文件数量和名称是否相同,并且可以清楚地看到哪些资源是"universal",哪些不是。
总而言之,这只是可读性的问题。如果将所有 "universal" 和智能手机资源放在 drawable
文件夹中,将平板电脑资源放在 drawable-sw600dp
文件夹中(这是更直观的方法),一切都会完全一样,所以它是真的取决于你。