Skip to content

Latest commit

 

History

History
150 lines (114 loc) · 3.96 KB

README_en.md

File metadata and controls

150 lines (114 loc) · 3.96 KB

ImagePicker

android image picker and cropper library, based on Android-Image-Cropper and made the following improvement:

  • easy api
imagePicker.startChooser(context, new ImagePicker.Callback() {
  // select image callback
  @Override public void onPickImage(Uri imageUri) {}
  // clip callback
  @Override public void onCropImage(Uri imageUri) {
    FrescoUtils.circle(draweeView, imageUri);
  }
});
  • Compatible with Fragment
public void startChooser(Activity activity, @NonNull Callback callback)

public void startChooser(Fragment fragment, @NonNull Callback callback)
  • fix some devices select the image to return FileNotFoundException
  • Runtime permissions check
  • Support android N+
  • Localization

image

Using ImagePicker in your application

${latest.version} is Download

add the following line to the dependencies section of your build.gradle file:

compile 'com.linchaolong.android:imagepicker:${latest.version}'
  1. add CropImageActivity in your Androidmanifest.xml:
<activity android:name="com.linchaolong.android.imagepicker.cropper.CropImageActivity"
        android:theme="@style/Base.Theme.AppCompat"/>
  1. call onActivityResult and onRequestPermissionsResult method in your Activity/Fragment:
  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    imagePicker.onActivityResult(activity/fragment, requestCode, resultCode, data);
  }

  @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
      @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    imagePicker.onRequestPermissionsResult(activity/fragment, requestCode, permissions, grantResults);
  }

Usage

1. Start Image Chooser

ImagePicker imagePicker = new ImagePicker();
imagePicker.startChooser(this, new ImagePicker.Callback() {
  @Override public void onPickImage(Uri imageUri) {

  }

  @Override public void onCropImage(Uri imageUri) {
    draweeView.setImageURI(imageUri);
    draweeView.getHierarchy().setRoundingParams(RoundingParams.asCircle());
  }

  @Override public void cropConfig(CropImage.ActivityBuilder builder) {
    builder
        .setMultiTouchEnabled(false)
        .setGuidelines(CropImageView.Guidelines.OFF)
        .setCropShape(CropImageView.CropShape.RECTANGLE)
        .setRequestedSize(960, 540)
        .setAspectRatio(16, 9);
  }

  @Override public void onPermissionDenied(int requestCode, String[] permissions,
      int[] grantResults) {
  }
});

click here read more about config

2. Get image from gallery

imagePicker.startGallery(activity/fragment, callback);

3. Get image from camera

imagePicker.startCamera(activity/fragment, callback);

Callback interface

  public static abstract class Callback{

    /**
     * image pick callback

     * @param imageUri
     */
    public abstract void onPickImage(Uri imageUri);

    /**
     * clip image callback
     *
     * @param imageUri
     */
    public void onCropImage(Uri imageUri){}

    /**
     * clip config
     */
    public void cropConfig(CropImage.ActivityBuilder builder){
      // default config
      builder.setMultiTouchEnabled(false)
          .setCropShape(CropImageView.CropShape.OVAL)
          .setRequestedSize(640, 640)
          .setAspectRatio(5, 5);
    }

    /**
     * permission denied callback
     *
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    public void onPermissionDenied(int requestCode, String permissions[], int[] grantResults){}
  }

For more details, please refer to the app module in the project