зачем использовать матрицу с ImageView setImageMatrix(matrix) и Bitmap.createBitmap(bmp, 0, 0, bmp.width(), bmp.height(), matrix, true); дают разные результаты?
вариант 1. использование setImageMatrix(matrix); он работает правильно, только я setLayoutParams(deviceWidth,deviceHeight); это означает, что размер drawable может быть меньше размера ImageView, так как вы можете видеть, что setBackgroundColor(Color.RED) рисует весь экран, в то время как мне нужен ImageView с точными размерами, которые можно рисовать, но когда я использую setLayoutParams() с размерами соответствующий размер растрового изображения, растровое изображение обрезается, вы можете видеть изображение, где я отображаю ImageView с параметрами deviceSize-layoutParams и bitmapSize-layoutParams, это моя матрица Matrix {[1.8266667, 0.0, 110.0][0.0, 1.3733333, 117.000015][0.0, 0.0, 1.0]}
private void drawBitmap() {
imageView = new ImageView(this);
imageView.setLayoutParams(new ViewGroup.LayoutParams(deviceWidth, deviceHeight));
imageView.setBackgroundColor(Color.RED);
imageView.setScaleType(ImageView.ScaleType.MATRIX);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image4);
Matrix matrix = loadMatrix(bmp);
RectF viewRect = new RectF(0, 0, deviceWidth, deviceHeight);
RectF imageRect = new RectF(0, 0, bmp.getWidth(), bmp.getHeight());
matrix.setRectToRect(imageRect, viewRect, Matrix.ScaleToFit.START);
imageView.setImageMatrix(matrix);
imageView.setImageBitmap(bmp);
setContentView(imageView);
}
Я получаю результат, отображаемый во 2-й части изображения, в то время как мне нужно преобразовать ImageView, как отображается только в 1-й части, не занимая весь экран, в то время как я получаю такой результат, комментируя эту строку matrix.setRectToRect(imageRect, viewRect, Matrix.ScaleToFit. НАЧАЛО);
при использовании параметров 2_nd проблем с layoutParams нет, хотя он каким-то образом обрезает ImageView и не отображает полностью
матрица включает данные, которые должны масштабироваться и преобразовываться в ImageView
Мне нужно одно из правильных решений, преобразованное ImageView с размером для рисования. Я имею в виду, что ImageView должен занимать (или сенсорная область ImageView) как часть для рисования.
Bitmap targetBitmap = Bitmap.createBitmap((source.getWidth()),
(source.getHeight()),
Bitmap.Config.ARGB_8888);
Paint p = new Paint();
p.setAntiAlias(true);
p.setDither(true);
p.setFilterBitmap(true);
RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight());
matrix.mapRect(rectF);
targetBitmap = Bitmap.createBitmap((int) rectF.width(), (int) rectF.height(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(targetBitmap);
tempCanvas.drawBitmap(source, matrix, p);
if (targetBitmap != source) {
source.recycle();
}
return targetBitmap;