例如下面这段代码,putExtra这里面的参数是怎么寻找的啊?小白求解释
public void clipPhoto(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
//可以选择图片类型,如果是*表明所有类型的图片
intent.setDataAndType(uri, "image/*");
// 下面这个crop = true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例,这里设置的是正方形(长宽比为1:1)
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 1000);
intent.putExtra("outputY", 1000);
//裁剪时是否保留图片的比例,这里的比例是1:1
intent.putExtra("scale", true);
//是否是圆形裁剪区域,设置了也不一定有效
//intent.putExtra("circleCrop", true);
//设置输出的格式
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
//是否将数据保留在Bitmap中返回
intent.putExtra("return-data", true);
startActivityForResult(intent, CUT_OK);
}
这段代码调用的是系统的图片裁剪类,有兴趣可去看系统裁剪器源码
/packages/apps/Gallery2/src/com/android/gallery3d/filltershow/crop/CropActivity.java
这个Activity接收处理"com.android.camera.action.CROP"的Action,里边有个方法
protected static CropExtras getExtrasFromIntent(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
return new CropExtras(extras.getInt(CropExtras.KEY_OUTPUT_X, 0),
extras.getInt(CropExtras.KEY_OUTPUT_Y, 0),
extras.getBoolean(CropExtras.KEY_SCALE, true) &&
extras.getBoolean(CropExtras.KEY_SCALE_UP_IF_NEEDED, false),
extras.getInt(CropExtras.KEY_ASPECT_X, 0),
extras.getInt(CropExtras.KEY_ASPECT_Y, 0),
extras.getBoolean(CropExtras.KEY_SET_AS_WALLPAPER, false),
extras.getBoolean(CropExtras.KEY_RETURN_DATA, false),
(Uri) extras.getParcelable(MediaStore.EXTRA_OUTPUT),
extras.getString(CropExtras.KEY_OUTPUT_FORMAT),
extras.getBoolean(CropExtras.KEY_SHOW_WHEN_LOCKED, false),
extras.getFloat(CropExtras.KEY_SPOTLIGHT_X),
extras.getFloat(CropExtras.KEY_SPOTLIGHT_Y));
}
return null;
}
再来看CropExtras类
/packages/apps/Gallery2/src/com/android/gallery3d/filltershow/crop/CropExtras.java
里边定义了常量
public static final String KEY_CROPPED_RECT = "cropped-rect";
public static final String KEY_OUTPUT_X = "outputX";
public static final String KEY_OUTPUT_Y = "outputY";
public static final String KEY_SCALE = "scale";
public static final String KEY_SCALE_UP_IF_NEEDED = "scaleUpIfNeeded";
public static final String KEY_ASPECT_X = "aspectX";
public static final String KEY_ASPECT_Y = "aspectY";
public static final String KEY_SET_AS_WALLPAPER = "set-as-wallpaper";
public static final String KEY_RETURN_DATA = "return-data";
public static final String KEY_DATA = "data";
public static final String KEY_SPOTLIGHT_X = "spotlightX";
public static final String KEY_SPOTLIGHT_Y = "spotlightY";
public static final String KEY_SHOW_WHEN_LOCKED = "showWhenLocked";
public static final String KEY_OUTPUT_FORMAT = "outputFormat";