Android剪切图片
项目需求中用到剪切图片功能,在网上打了比较好的解决方案,分享下。
参考:http://www.linuxidc.com/Linux/2012-11/73940.htm
贴出部分代码:
private android.view.View.OnClickListener onClickListener = new android.view.View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.my_btn_cilp: //剪切大图
//(file://)必须要加
mImageCaptureUri = Uri.parse("file://"+imageFilePath);
//大图使用URL
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 600);
intent.putExtra("outputY", 600);
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
//注意Intent.createChooser的使用,选择多个操作应用
startActivityForResult(Intent.createChooser(intent, "选择"), CHOOSE_BIG_PICTURE);
break;
case R.id.my_btn_find://选择图库
Intent intentimage = new Intent(Intent.ACTION_PICK, null);
intentimage.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
startActivityForResult(intentimage, PICK_FROM_FILE);
break;
case R.id.my_btncilp_thumb: //剪切缩略图
//通过intent中设置的type属性来判断具体调用哪个程序的
Intent intentThumb = new Intent(Intent.ACTION_GET_CONTENT, null);
intentThumb.setType("image/*");
intentThumb.putExtra("crop", "true");
intentThumb.putExtra("aspectX", 2);
intentThumb.putExtra("aspectY", 1);
intentThumb.putExtra("outputX", 200);
intentThumb.putExtra("outputY", 100);
intentThumb.putExtra("scale", true);
intentThumb.putExtra("return-data", true);
intentThumb.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intentThumb.putExtra("noFaceDetection", true); // no face detection
startActivityForResult(intentThumb, CHOOSE_BIG_PICTURE_SAVE);
break;
default:
break;
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(
MainActivity.this,
"這是拍照所得" + requestCode + "resultCode===" + resultCode
+ "RESULT_OK======" + RESULT_OK, Toast.LENGTH_LONG)
.show();
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case PICK_FROM_FILE:
//缩略图使用bitmap
mImageCaptureUri = data.getData();
Log.i("cilp", "CHOOSE_BIG_PICTURE: data = " + data);//it seems to be null
if(mImageView != null){
Bitmap bitmap = decodeUriAsBitmap(mImageCaptureUri);//decode bitmap
mImageView.setImageBitmap(bitmap);
}
break;
case CHOOSE_BIG_PICTURE:
saveBigmap();
break;
case CHOOSE_BIG_PICTURE_SAVE:
if(data != null){
saveCutPic(data);
}
break;
default:
break;
}
}
注:示例工程,给出了剪切大图、缩略图的比较以及Intent.createChooser的使用
另外:补充下设置 RadioButton在文字 的右边 ,使用属性android:drawableRight="@android:drawable/btn_radio"
示例图: