如何在图库容器中添加旋转左,右,上,下和裁剪选项

时间:2018-07-23 07:28:32

标签: android android-intent android-gallery

我使用内部存储来保存图像并在网格视图中检索,现在我的任务是使用旋转和裁剪选项在图库中打开图像,我在Android Lollipop版本中工作的示例在图库中打开图像并包含旋转和裁剪选项,但在Android Oreo版本中,图片在图库中打开,但未显示任何选项。下面给出的示例代码可在图库视图中打开。

Intent intent = new Intent(Intent.ACTION_VIEW)//
                    .setDataAndType(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ?
                                    android.support.v4.content.FileProvider.getUriForFile(MyFileActivity.this,getPackageName() + ".provider", file) : Uri.fromFile(file),
                            "image/*").addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivityForResult(intent,PICK_IMAGE_REQUEST);

1 个答案:

答案 0 :(得分:1)

使用此Library,您可以裁剪,左,右,上,下图库图像

将此库添加到您的build.gradle(Module.app)文件中

implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'

将此行添加到您的Proguard配置文件中

-keep class android.support.v7.widget.** { *; }

将CropImageActivity添加到您的AndroidManifest.xml

<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
android:theme="@style/Base.Theme.AppCompat"/> <!-- optional (needed if 
 default theme has no action bar) -->

然后在onClick图库或照相机按钮中添加以下方法

   CropImage.activity()                                      
  .setGuidelines(CropImageView.Guidelines.ON)
     .setAspectRatio(1,1)
    .start(YourActivityName.this);

    // for fragment (DO NOT use `getActivity()`)
     CropImage.activity()
     .start(getContext(), this);

现在在您的活动中使用onActivityResult方法来获取裁剪结果

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
     CropImage.ActivityResult result = CropImage.getActivityResult(data);
     if (resultCode == RESULT_OK) {
      Uri resultUri = result.getUri();
    } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) 
        {
       Exception error = result.getError();
       }
         }
      }