2014-12-03 55 views
3

我在res/drawable文件夹(不是drawable-hdpi,drawable-ldpi等文件夹)中有1280x720px图像。但在运行时,大小为2560x1440像素。这怎么可能? Android会调整可绘制文件夹中的图像吗?“drawable”文件夹中的图像会自动调整大小?

下面是代码:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.start_image_left); 
    int h = bitmap.getHeight(), w = bitmap.getWidth(); 

我在摩托罗拉Moto G的第二代测试此。

+1

我认为确保不缩放的唯一方法是使用drawable-nodpi文件夹。 – zgc7009 2014-12-03 19:36:27

+0

@ zgc7009:“你如何加载你的图像”是什么意思?我只是把它放在资源中,后来我把它解决了。何时需要扩展? – 2014-12-03 19:37:04

+0

我正在查看手机上的问题,并未在您的问题中看到您的代码。我以为你把它加载到视图中,这会导致缩放。 Android会在可绘制文件夹中缩放图像,我不确定如何处理缩放比例,但是它可以缩放它们。保证不缩放(我认为)的唯一方法是将文件放入nodpi限定的可绘制文件夹中。 – zgc7009 2014-12-03 19:40:36

回答

7

确实没有理由你应该永远把位图到根目录drawable。它通常应该只用于XML可绘制。 drawable目录中的位图基本上将被处理,就好像它们在drawable-mdpi(其他密度按比例放大)一样。

如果您的目标是在所有密度上具有相同像素大小的位图图像,则需要将其放入drawable-nodpi。这会导致它不被缩放。

+2

如果你不想要(为什么),你正在使用'BitmapFactory.decodeResource';你也可以使用'BitmapFactory.Options#inScaled = false;'来禁止缩放 – Lovis 2014-12-03 19:56:44

0

你是对的,Android会根据当前设备配置自动缩放图像。但是,如果你不希望这样的行为,你可以创建一个位图资源文件,放在drawable文件夹并将其指向你要使用这样的

<bitmap xmlns:android="http://schemas.android.com/apk/res/android android:src="@drawable/yourDrawableHere" android:gravity="center" />

被拉伸通过指定重心,机器人不管怎样,都不会缩放图像。

要使用此位图资源文件,在你的代码,检索像这样

Drawable drawable = getResources().getDrawable(R.drawable.yourBitmaoResourceFileName);

+0

你可以把它放到'drawable-nodpi'文件夹中,而不是使用hack – Lovis 2014-12-03 19:55:18

+1

。是的,因为像你的答案已经在上面说过了,所以我只是想提供另一种解决方法。 – Biu 2014-12-03 19:58:35

相关问题