Ха-ха. Я предполагаю, что мораль этой истории заключается в том, что иногда даже неправильный кодекс работает - и сохранять бдительность!
исал программу, которая в любое время отображает 8 выбранных пользователем изображений на экране. Каждое изображение взято из его оригинальной формы и уменьшено до однородного размера. Для этого я использую код ниже:
Bitmap bitmapOrg = BitmapFactory.decodeFile(File Location Here);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int newWidth = 100;
int newHeight = 100;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width,
height, matrix, true);
// make a Drawable from Bitmap to allow to set the BitMap
// to the ImageView, ImageButton or what ever
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
//ImageView imageView = new ImageView(this);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
// set the Drawable on the ImageView
iv.setImageDrawable(bmd);
// center the Image
iv.setScaleType(ScaleType.CENTER);
Хотя мой код работает не идеально. Кажется, я использую много памяти, особенно вызываю этот код, возможно, 8 раз за раз. Где в коде я бы «переработал» память и как сделать так, чтобы этот код работал лучше?
РЕДАКТИРОВАТЬ:
Таким образом, я реализовал код в своем проекте, и он работал отлично, а затем я попытался добавить его в другие разделы, и он просто перестал работать все вместе. Мой код выглядит так: есть идеи, что я делаю не так?
BitmapFactory.Options options = new BitmapFactory.Options();
options.outWidth = 50;
options.outHeight = 50; Bitmap bitmap = BitmapFactory.decodeFile(path, options);
ImageView iv = (ImageView) findViewById(R.id.imageView7);
iv.setImageBitmap(bitmap);