Edmodo android图像裁剪器,修复宽高比

gio*_*ozh 1 android crop

我在android lollipop上使用edmodo/cropper库时遇到了一些问题.我的应用程序应拍摄一些照片,每张照片拍完后,用户应剪裁正方形图像.这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.example.newapicamera.AutoFitTextureView
    android:id="@+id/texture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/footer" />

<com.edmodo.cropper.CropImageView
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:id="@+id/CropImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/footer"
    android:visibility="invisible" />

<ImageView
    android:id="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:src="@drawable/footer" />

<TextView
    android:id="@+id/current_picture"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:textColor="#FFFFFF"
    android:textSize="30sp" />
Run Code Online (Sandbox Code Playgroud)

这就是我拍摄照片后如何启动作物库的方法;

crop_view.setImageBitmap(bitmap);
mCameraDevice.close();
mTextureView.setVisibility(View.INVISIBLE);
crop_view.setVisibility(View.VISIBLE);
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int dpWidth = displayMetrics.widthPixels;
crop_view.setFixedAspectRatio(true);
crop_view.setAspectRatio(dpWidth, dpWidth);
Run Code Online (Sandbox Code Playgroud)

我有后续问题:

  • 使用此代码,裁剪是一个条纹高的屏幕
  • 如果我删除固定宽高比,我会忽略宽高比,并获得矩形裁剪.那么,我怎样才能将庄稼逼到广场?

小智 8

我有同样的问题,以下解决方案适合我:

cropImageView.setFixedAspectRatio(true);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        cropImageView.setAspectRatio(7, 7);
    }
}, 500);
Run Code Online (Sandbox Code Playgroud)