ElyarAnwar Note:
<embed src="http://music.163.com/style/swf/widget.swf?sid=9028524&type=3&auto=1&width=320&height=66" width="340" height="86" allowNetworking="all"></embed>
转载前请注明出处,尊重版权 :http://blog.csdn.net/u012418084
调用系统的裁剪工具:(有轮子用轮子)
package com.cn.ilim.Util;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;
/**
*
* @author ElyarAnwar
*
*/
public class UtilCopeImage {
/* 请求码 */
private static final int IMAGE_REQUEST_CODE = 0;// 请求获取相册中的图片
private static final int CAMERA_REQUEST_CODE = 1;// 请求开启照相机,暂时不用,升级可用
private static final int RESULT_REQUEST_CODE = 2;// 裁剪过后的请求
private static Activity activity;
/**
* 裁剪后的照片显示到ImageView
*
* @param data
*/
private static void getImageToView(ImageView image, Intent data) {
// TODO Auto-generated method stub
Bundle bundle = data.getExtras();
if (bundle != null) {
Bitmap bitmap = bundle.getParcelable("data");
Drawable drawable = new BitmapDrawable(bitmap);
image.setImageDrawable(drawable);
}
}
/**
* 对从相册获取的照片进行裁剪 (有轮子用轮子)
*
* @param uri
*/
private static void startPhotoZoom(Activity activity, Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// 设置裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 320);
intent.putExtra("outputY", 320);
intent.putExtra("return-data", true);
activity.startActivityForResult(intent, RESULT_REQUEST_CODE);
}
/**
* 进行裁剪
* <span style="color:#FF0000;">调用方法一:选图</span>
*
* @param activity
*/
public static void startMethed(Activity activity) {
UtilCopeImage.activity = activity;
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
UtilCopeImage.activity.startActivityForResult(intent,
IMAGE_REQUEST_CODE);
}
/**
* <span style="color:#FF0000;">在实现裁剪的Acvitity的ActivityResult()方法中调用</span>
*
* <span style="color:#FF0000;">调用方法二:裁剪并显示至目标区域</span>
*
* @param requestCode
* @param resultCode
* @param data
* @param image
*/
public static void resultMethed(int requestCode, int resultCode,
Intent data, ImageView image) {
if (resultCode != 0) {
switch (requestCode) {
case IMAGE_REQUEST_CODE:
startPhotoZoom(UtilCopeImage.activity, data.getData());// 进入相册获取照片并送到裁剪器
break;
case RESULT_REQUEST_CODE:// 裁剪完成
if (data != null) {
getImageToView(image, data);// 裁剪后的照片显示到ImageView
}
break;
}
}
}
}
调用方式:
第一步:点击控件进入相册选图:调用UtilCopeImage.startMethed(Activity activity);
例如:
XXX.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
<span style="color:#FF0000;">UtilCopeImage.startMethed(AtyAddUser.this);// 开始裁剪</span>
}
});
第二步:在此Activity的onActivityResult()方法中调用
UtilCopeImage.resultMethed(int requestCode, int resultCode,Intent data, ImageView image);
完成;
只需调用
UtilCopeImage.startMethed(Activity activity);// 开始裁剪
UtilCopeImage.resultMethed(int requestCode, int resultCode,Intent data, ImageView image);// 完成裁剪并显示