Я использую следующую функцию для масштабирования любого изображения на ширину экрана:Android ImageView не масштабируются на экран ширина
DisplayMetrics metrics = new DisplayMetrics();
((Activity)context)
.getWindowManager()
.getDefaultDisplay()
.getMetrics(metrics);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// Calculate the ratio between height and width of Original Image
float ratio = (float) height/(float) width;
int newWidth = metrics.widthPixels; // This will be equal to screen width
float newHeight = newWidth * ratio; // This will be according to the ratio calulated
// calculate the scale
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = newHeight/height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
Bitmap resizedBitmap
= Bitmap.createBitmap(
bitmap, 0, 0,
width, height,
matrix, true
);
// make a Drawable from Bitmap to allow to set the BitMap
// to the ImageView, ImageButton or what ever
return new BitmapDrawable(resizedBitmap);
После ввода некоторых проверок, значение, metrics.widthPixels = 540 и ширина новый битмап также равен 540. Это означает, что Bitmap или Imageview должны использовать ширину всего экрана. Вместо этого результирующие изображения не имеют ширины экрана. Я в том числе скриншот:
Как вы можете видеть на изображении, оставшаяся пустая часть экрана отображается в черном цвете.
Код для создания ImageView является:
ImageView imageBanner = new ImageView(context);
imageBanner.setLayoutParams(new
LinearLayout.LayoutParams(
Globals.wrapContent,
Globals.wrapContent));
imageBanner.setBackgroundResource(R.drawable.imv_banner);
new SyncImage(context, imageBanner, urlImage).execute();
Globals.wrapContent являются явные константы, которые содержат одни и те же значения для стандартного макета Params, так что не думаю, что их как разные. SyncImage Класс Async, используемый для загрузки и отображения изображения в ImageView.
Пожалуйста, предоставьте решение для масштабирования изображения до ширины экрана, а изображение должно сохранить исходное соотношение размеров.
спасибо Рама Рама
Посмотрите здесь http://stackoverflow.com/questions/15440647/scaled-bitmap-maintaining-aspect-ratio – raktale