В настоящее время я делаю пользовательский вид, который используется для обрезки изображения. Вид - это, в основном, сетка, которая определяет область кадрирования, например 3x3,3x2,3x1, и меняет сетку в основном с 3x3 на 3x2 или один соответственно при нажатии кнопки.и еще один просмотр сенсорного изображения, где изображение сидит и изображение регулируется в соответствии с сеткой (пользовательский вид)
Теперь проблема заключается в том, что часть изображения не настраивается в 3х3, в основном все изображениенастраивается
Здесь см. изображение моего приложения
Как это должно быть на самом деле
В этом проблема, и даже в 3x2,3x1 изображение обрезается, я думаю, что проблема с моим наблюдателем, где я поместил код для настройки изображения
private class CObserver implements ViewTreeObserver.OnGlobalLayoutListener {
public void onGlobalLayout() {
MainActivity.this.gridLineView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
GridLineView.gridHeight = MainActivity.this.gridLineView.getGridHeight();
Uri parse = Uri.parse(MainActivity.this.getIntent().getExtras().getString("imageUri"));
Log.e("selectedImage", parse.toString());
Point point = new Point();
MainActivity.this.getWindowManager().getDefaultDisplay().getSize(point);
int i = point.x;
int i2 = point.y;
if (i == 0 || i2 == 0) {
DisplayMetrics displayMetrics = new DisplayMetrics();
MainActivity.this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
i = displayMetrics.widthPixels;
i2 = displayMetrics.heightPixels;
}
try {
MainActivity mainActivity = MainActivity.this;
Context context = MainActivity.this;
double d = (double) i;
i = (int) (d * 1.5d);
Log.e("i",i+"");
Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver() ,parse);
Bitmap samplebitmap=scaleBitmap(bitmap,i,i2);
//Bitmap samplebitmap = mainActivity.decodeSampledBitmapFromInputStream(context, parse, i, i2);
//Bitmap samplebitmap = Bitmap.createScaledBitmap(bitmap,i,i2,false);
MainActivity.this.origBitmap = samplebitmap;
if (samplebitmap != null) {
MainActivity.this.touchImageView.setImageBitmap(samplebitmap);
}
} catch (IOException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
}
так что если кто-нибудь может помочь мне с моим кодом исправить изображение, показанное в 3x3, и получить половину изображения в сетке 3x2
Вот мои все файлы проекта Файлы проекта