为了在 Android 中裁剪图像,我正在使用这个库。 简单裁剪视图 我发现这非常有用。
我的问题是,当焦点不在 CropImageView 上时,例如当我选择裁剪区域,然后我尝试将文本放在 EditText 上时,裁剪将变为默认值。 CropImageView 变为默认值
这是 XML 文件。
<com.isseiaoki.simplecropview.CropImageView
android:id="@+id/cropImageView"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="@dimen/image_size"
custom:cropMode="ratio_1_1"
custom:cropEnabled="true"
custom:handleSize="10dp"
custom:initialFrameScale="1.0"
android:layout_alignParentTop="true" />
这是活动代码:
CropImageView cropImageView;
cropImageView = (CropImageView) findViewById(R.id.cropImageView);
cropImageView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
cropImageView.setImageBitmap(bitmap);
cropImageView.setBackgroundColor(Color.BLACK);
cropImageView.setGuideShowMode(CropImageView.ShowMode.SHOW_ON_TOUCH);
cropImageView.setTouchPaddingInDp(16);
其库内的错误可以通过替换设置布局内的代码来轻松修复
private int prvW=0;
private int prvH=0;
private void setupLayout(int viewW, int viewH) {
if (viewW == 0 || viewH == 0) return;
if (prvW==viewW && prvH==viewH && mIsInitialized) return;
prvH=viewH;
prvW=viewW;
setCenter(new PointF(getPaddingLeft() + viewW * 0.5f, getPaddingTop() + viewH * 0.5f));
setScale(calcScale(viewW, viewH, mAngle));
setMatrix();
mImageRect = calcImageRect(new RectF(0f, 0f, mImgWidth, mImgHeight), mMatrix);
if (mInitialFrameRect != null) {
mFrameRect = applyInitialFrameRect(mInitialFrameRect);
} else {
mFrameRect = calcFrameRect(mImageRect);
}
mIsInitialized = true;
invalidate();
}