我正在尝试根据最小宽度属性加载一些图像。为此,我将图像放入以下文件夹中:
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
}
答案 0 :(得分:2)
您应该根据屏幕密度对图像进行分类。不 在屏幕宽度的基础上。
屏幕密度的类型很少: -
ldpi~120dpi
mdpi~160dpi
hdpi~240dpi
xhdpi~320dpi
xxhdpi~480dpi
xxxhdpi~640 dpi
每个设备仅在它们之间进行分类。
他们的文件夹就像: -
抽拉-LDPI
抽拉-MDPI
抽拉-HDPI
抽拉-xhdpi
抽拉-xxhdpi
抽拉-xxxhdpi
ldpi中最小屏幕密度的图像。 xxxhdpi中最大屏幕密度的图像。
其他事情将由android本身管理。它将根据屏幕密度加载正确的图像
永远记得mdpi据说是基线。这是1:1比率,表示mdpi,1 px = 1dp。
答案 1 :(得分:1)
您需要将其他图像文件放在drawable文件夹中。无需创建sw0dp文件夹,它将被忽略。
答案 2 :(得分:0)
我意识到drawable-sw320dp文件夹没用。我将图像放在drawable和drawable-sw320dp文件夹中,并在最小宽度为320 dp的设备上运行。系统从drawable文件夹加载图像,而不是drawable-sw320dp文件夹。因此,看起来320dp是android中可能的最小宽度,你需要将图像放在可绘制文件夹中以供这些类型的设备使用。
答案 3 :(得分:0)
drawable-sw0dp
是Android资源的有效文件夹名称,所以是的,您可以将资源放在那里,并且它们将优先于drawable
文件夹中具有相同名称的资源。 official documentation。由于所有Android设备的最小宽度等于或大于0,sw0dp
选择器不排除其中任何一个。
那么,为什么要使用drawable-sw0dp
文件夹,为什么不使用drawable
呢?假设你有一个智能手机和平板电脑项目有一些共同的资源,有些则没有。您可以将所有公共资源放在drawable
文件夹中,以及所有&#34;特定的&#34; drawable-sw0dp
(适用于智能手机)和drawable-sw600dp
(适用于平板电脑)文件夹中的资源。通过这种方式,您可以轻松地检查这两个文件夹是否包含相同数量的文件和相同的名称,并清楚地看到哪些资源是&#34;通用&#34;哪个没有。
总之,这只是一个可读性的问题。如果你把所有的&#34;通用&#34;那么一切都将完全相同。和drawable
文件夹中的智能手机资源以及drawable-sw600dp
文件夹中的平板电脑资源(这是更直观的方法),所以它非常适合您。