CropImageView 变为默认值

问题描述 投票:0回答:1

为了在 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);
android android-custom-view
1个回答
0
投票

其库内的错误可以通过替换设置布局内的代码来轻松修复

  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();
  }
© www.soinside.com 2019 - 2024. All rights reserved.