Что ж, все это мучает меня долгими неделями, я устанавливаю изображение высотой 227 пикселей в масштабе до 170 пикселей, даже если я хочу, чтобы оно было wrap_content всякий раз, когда я это делаю.
В порядке. Здесь я беру свое изображение длиной 1950 пикселей (здесь я помещаю его часть, чтобы вы могли понять, как оно должно выглядеть).
Во-первых, я хочу уменьшить его до 227 пикселей в высоту, потому что именно так он был разработан и таким он должен быть.
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.ver_bottom_panel_tiled_long);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int newWidth = 200; //this should be parent's whdth later
int newHeight = 227;
// calculate the scale
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) 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(bitmapOrg, 0, 0,
width, height, matrix, true);
BitmapDrawable dmpDrwbl=new BitmapDrawable(resizedBitmap);
verbottompanelprayer.setBackgroundDrawable(dmpDrwbl);
так что ... это вовсе не обрезанное изображение - нет, это 1950 пикселей, сжатых до 200 пикселей.
Но я хочу просто обрезать что-нибудь, кроме этих 200 пикселей или любой другой ширины, которую я установлю, - обрезать, а не вжимать все это длинное изображение в область 200 пикселей.
Кроме того, BitmapDrawable (растровое изображение); и imageView.setBackgroundDrawable(drawable); устарели - как я могу это изменить?