Странная вещь случается - по крайней мере, я ее не понимаю.Android - масштабирование изображения после того, как я сделал это программно
У меня есть изображение (w: 120px, h: 63px), которое представлено на одном ImageButton. Единственный вариант этого изображения, который у меня есть, помещается в drawable-hdpi (и нет другого доступного каталога). Все в порядке с этим изображением, и каждое разрешение (плотность), Android позаботится об этом очень красиво.
Но проблема в том, что, когда я снимаю с альбома (например, очень большое фото), масштабируйте его до размеров кнопки (ранее упоминалось, w: 120px h: 63px) и установите это маленькое изображение как ImageButton background.
В случае, если я тестирую эмулятор со средней плотностью (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.
Установите api на 1.5, это остановит андроид от изменения размера, но означает, что вам нужно будет это сделать. –