你如何计算加载图像的大小

How do you calculate the size of a loaded image

我在 drawable 文件夹 中有一个图像 image.png(没有任何其他 drawable-hdpi 等文件夹)。

这张图片的大小是50x50。但是当我像这样从我的应用程序加载它时: BitmapFactory.decodeResource(getResources(), R.drawable.image)

然后我用 getWidth()getHeight() 检查大小,我得到 150x150

谁能解释一下如何计算这个 150x150 加载大小? (不是以编程方式,我只是想知道是否有一个公式可以用来告诉图像将被加载到 150x150

另外,这个 150x150 以像素为单位吗?

谢谢!

如果您有 Drawable 个图像并且您想要计算已加载图像的大小

Drawable d = getResources().getDrawable(R.drawable.image);
int h = d.getIntrinsicHeight(); 
int w = d.getIntrinsicWidth();  

Android 文档说:

public int getIntrinsicHeight ()

Return the intrinsic height of the underlying drawable object. Returns -1 if it has no intrinsic height, such as with a solid color.

public int getIntrinsicWidth ()

Return the intrinsic width of the underlying drawable object.Returns -1 if it has no intrinsic width, such as with a solid color.

  • 是的,这个值是以像素为单位的,利用java文档我的朋友~
  • 如果你想让图片大小不变,把它放到drawable-nodpi
  • 如果你把图片放在drawable里,它和drawable-mdpi里的一样,作为第一个Android供电的设备,T-Mobile G1是一个正常尺寸和 mdpi(中等)密度 :)
  • 没有神奇的公式:

    ldpi (low) ~120dpi
    mdpi (medium) ~160dpi
    hdpi (high) ~240dpi
    xhdpi (extra-high) ~320dpi
    xxhdpi (extra-extra-high) ~480dpi
    xxxhdpi (extra-extra-extra-high) ~640dpi

    也就是说,在您的情况下,可能在 xxhdpi 设备上开发,480/160*50=150,请记住 android 旨在以相同的大小可视化所有 ui 元素在所有屏幕上,因此密度越高,缩放图像越大。

在 android 工作室中,我们使用像这样组合的图像尺寸。