0

我正在尝试ImageView在单个LinearLayout.

所有的ImageViews 都需要有一个位图。ImageViews 只会在大小上有所不同。不会调整单个位图的大小。

简单的方法是为每个 ImageView 创建一个 Bitmap。但是,这很快就会耗尽内存。

final Bitmap placeholderBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
final Canvas canvas = new Canvas(placeholderBitmap);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.placeholder_image), 0, 0, null);
imageView.setImageBitmap(placeholderBitmap);
linearLayout.addView(imageView);

我也尝试设置最大和最小高度和宽度,没有效果。图像保持相同大小。

imageView.setImageResource(R.drawable.ic_no_image);
imageView.setMaxHeight(imageViewInfo.height);
imageView.setMaxWidth(imageViewInfo.width);

我相信使用Drawables 是正确的“Android”方式,但我找不到一种方法来动态创建右侧的 Drawable 并将共享位图分层。

4

3 回答 3

1

只需使用一个Bitmap-正如您所说,它们都将使用相同的Bitmap,因此无需重复。

如果您希望ImageViews 具有不同的大小并且将Bitmap比例尺本身设置为 s 的大小,ImageView则使用setScaleTypeorandroid:scaleType属性来设置s 的比例尺ImageView。例如FIT_START,保持图像的纵横比并尝试ImageView从左上角开始填充。

我认为没有必要创建 a Drawable,但如果需要,您可以Bitmap使用以下方法创建一个:

Drawable d = new BitmapDrawable(bitmap); 

ImageView实际上,当您调用setImageBitmap(...).

于 2012-08-24T15:17:11.527 回答
1

ImageView 将始终将位图大小调整为需要的比例。

如果您想节省内存,请手动调整位图大小并将它们设置到 ImageViews 中,这应该会阻止 ImageView 在内部调整其大小 - 以确保您可以将图像视图的 layout_width 和 layout_hieght 设置为“wrap_content”。

于 2012-08-24T14:36:57.440 回答
0

我想可能正在寻找ClipDrawable

您将android:drawable剪辑 XML 的属性设置为您的位图

或者您可以使用示例中给出的 Java 代码来完成

于 2012-08-24T15:16:45.483 回答