我有7个小图像按钮。我希望当您单击一张图片时,您可以从图库中选择一张图片并将其显示在按钮上。问题在于相机中的4.5 Mb等大图片,我添加的每张图片都需要50 Mb ram,在第3张图片上,它会因内存不足而崩溃。 当我删除按钮上的setImage
时,我只保存我的照片以供以后使用。
private void setPicture(ImageButton button, Intent data){
Uri imageUrl = data.getData();
InputStream inputStream = null;
ByteArrayOutputStream stream = null;
try {
inputStream = getContentResolver().openInputStream(imageUrl);
Bitmap image = BitmapFactory.decodeStream(inputStream);
Drawable drawable = new BitmapDrawable(getResources(), image);
stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
pictures.add(stream.toByteArray());
//button.setImageDrawable(drawable);
应避免将完整的大位图保留在内存中,只是为了在按钮上显示它的一小部分样本 - 而是加载缩减采样的版本。
您应该查看此官方Android指南:
高效加载大型位图
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html