【发布时间】:2017-10-09 04:52:21
【问题描述】:
我遇到了一个问题:
我有不同大小的图像文件。 (hdpi, xhdpi, xxhdpi, xxxhdpi)
当我在 hdpi,xhdpi,xxhdpi 设备中使用图像文件时,很好。
但是当设备为xxxhdpi时,图像文件的分辨率变小了。
我不知道为什么会这样。
例如:
我有两台设备,一台的分辨率是xxhdpi,另一台是xxxhdpi。
我有2个图像文件,一个放在“drawable-xxhdpi”文件夹中,它的分辨率是1080x1920。另一个放在“drawable-xxxhdpi”文件夹中,分辨率为1440x2560。
当我读取图像文件时,出现了问题。
案例xxhdpi: 原图为1080x1920,读取的图像为1080x1920静止。
xxxhdpi 案例: 原来的图片是1440x2560,但是读出来的图片变成了1260x2240。
这是我的代码:
DisplayMetrics metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.i("SettingCardFragment", String.format("%37s%dx%d",
"Screen resolution: ", metrics.widthPixels, metrics.heightPixels));
Drawable drawable = ContextCompat.getDrawable(getActivity(),R.drawable.background);
Log.i("SettingCardFragment", String.format("%37s%dx%d",
"(Drawable)Background.png resolution: ", drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()));
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.background);
Log.i("SettingCardFragment", String.format("%37s%dx%d",
"(Bitmap)Background.png resolution: ", bitmap.getWidth(), bitmap.getHeight()));
我使用代码检查所读取图片的分辨率。
我在 xxhdpi 设备中得到了结果:
SettingCardFragment: Screen resolution: 1080x1776
SettingCardFragment: (Drawable)Background.png resolution: 1080x1920
SettingCardFragment: (Bitmap)Background.png resolution: 1080x1920
在 xxxhdpi 设备中的结果:
SettingCardFragment: Screen resolution: 1440x2392
SettingCardFragment: (Drawable)Background.png resolution: 1260x2240
SettingCardFragment: (Bitmap)Background.png resolution: 1260x2240
为什么分辨率从1440x2560变成了1260x2240?
如果谁知道,请帮帮我~
【问题讨论】:
-
你好,我猜图片的宽度和高度都匹配,对吧?
-
您确定它是 xxxhdpi 设备并且您没有看到 xxhdpi 的放大版本吗?
-
@X09 为什么图片大小和屏幕匹配?我只是将它读入程序,我没有将它应用到任何视图中。
-
@Jim,是的,对不起,你是对的。似乎有点奇怪。但是您确定图像的分辨率对吗?
-
@X09 是的,我确定图片的分辨率是 1440x2560,无论是从 Windows 还是从 Android Studio 的窗口。
标签: android image screen drawable resolution