Странная вещь происходит - по крайней мере, я не понимаю.
У меня есть изображение (w: 120px, h: 63px), которое представлено на одной ImageButton.Единственный вариант этого изображения, который у меня есть, помещен в drawable-hdpi (и другого каталога для рисования нет).Все в порядке с этим изображением и каждым разрешением (плотностью), Android очень хорошо позаботится о нем.
Но проблема в том, что я беру фотографию из альбома (например, очень большое фото), масштабэто размеры кнопки (ранее упоминалось, w: 120px h: 63px) и установите это маленькое изображение в качестве фона ImageButton.
В случае, когда я тестирую на эмуляторе со средней плотностью (160), это нормальноно при тестировании на устройстве с кнопкой высокой плотности размер изменяется, так как масштабированное изображение выглядит меньше.
Кто-нибудь имеет представление о том, что происходит, и почему размер изображения снова изменяется после того, как я его масштабировал?
Любая подсказка будет высоко оценена.
Вот код, который я использую для изменения размера изображения:
public static void resizeAndSaveImage(String pathToResize, int newWidth, int newHeight, FileOutputStream output) {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(pathToResize), null, options);
if (bitmap != null) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
resizedBitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
output.close();
}
} catch (Exception e) {
// ...
}
Параметры измерения передаются следующим образом: newWidth = 120, newHeight = 63.