我正在尝试根据最小宽度属性加载一些图像。为此,我将图像放入以下文件夹:
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/