如何设置 Bitmap 图像的高度和宽度?

3
早上好,我有一个问题。在我的应用程序中,我正在尝试加载一张位图图片。如Android指南建议 (http://developer.android.com/training/displaying-bitmaps/load-bitmap.html),我使用了以下方法:decodeSampledBitmapFromResource(Resources res, int resId,int reqWidth, int reqHeight)。它完美地工作了,但是起初不行,因为我根据我的智能手机的尺寸设置了reqWidth和reqHeight(高度:2560;宽度:1440)。因此,应用程序产生了以下错误:

12-16 12:21:51.911 5401-6627/? E/ACRA: java.lang.OutOfMemoryError: Failed to allocate a 44236812 byte allocation with 13002080 free bytes and 12MB until OOM 12-16 12:21:51.911 5401-6627/? E/ACRA: at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 等等...

但是,当我按照指南建议更改高度和宽度时(100 x 100),它可以工作,并且在将其增加到500 x 500后也可以。因此,我的问题是如何为不同的设备动态设置此值?或者这个值可以保持静态,从而适应屏幕大小?对于我的糟糕英语表示抱歉,我是意大利人。希望我表达清楚了! :)
3个回答

1
您可能需要的是Android的功能,根据用户屏幕使用不同的可绘制资源。请参阅此处
在您的情况下,您将手动创建不同尺寸的图片,并将它们放置在res文件夹中的不同文件夹中。之后,Android系统将根据设备处理选择正确的图像。

我不是很理解,我的图片已经有不同的尺寸了,例如:image2.jpg image2.jpg (hdpi) image2.jpg (ldpi) image2.jpg (mdpi) image2.jpg (xdpi)你是指这个吗? - faienz93
假设您有一张100x100像素的图像,并且想将其用作可绘制对象。您可以将其命名为my_drawable.png,并放置在res中的drawable-mdpi文件夹下。然后,您创建一个75x75像素的图像,并将其放置在同名的drawable-ldpi文件夹下。接着,您创建一个相同的150x150像素的图像,并将其放置在drawable-hdpi文件夹下,名称仍为my_drawable.png,以此类推,直到您拥有与每个屏幕密度匹配的图片。 - Yury Fedorov

0

尝试使用这段代码与 XML 文件一起使用

<ImageView 
android:id="@+id/img"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@drawable/ic_launcher"
/>

你可以通过编程来设置图像的大小

  img.setImageResource(R.drawable.login_avatar);
  img.getLayoutParams().height = 200;
  img.getLayoutParams().width = 150;

它能工作,但我想将宽度和高度设置为match_parent,并将img.getLayoutParams().height = 200;移动我的图像到左上角 :( - faienz93
@AntonioFaienza 这取决于您在哪里编写图像(容器)布局,您需要从上、下、左、右等方向给出边距,以便按照您的方式设置图像。 - Amitsharma

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接