package com.kaixin.android.activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.kaixin.android.KXActivity;
import com.kaixin.android.R;
import com.kaixin.android.ui.base.CropImage;
import com.kaixin.android.ui.base.CropImageView;
import com.kaixin.android.utils.PhotoUtil;
/**
* 图片剪切类
*
* @author gyz
*
*/
public class ImageFilterCropActivity extends KXActivity {
private Button mCancel;
private Button mDetermine;
private CropImageView mDisplay;
private ProgressBar mProgressBar;
private Button mLeft;
private Button mRight;
public static final int SHOW_PROGRESS = 0;
public static final int REMOVE_PROGRESS = 1;
private String mPath;// 修改的图片地址
private Bitmap mBitmap;// 修改的图片
private CropImage mCropImage; // 裁剪工具类
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imagefilter_crop_activity);
findViewById();
setListener();
init();
}
private void findViewById() {
mCancel = (Button) findViewById(R.id.imagefilter_crop_cancel);
mDetermine = (Button) findViewById(R.id.imagefilter_crop_determine);
mDisplay = (CropImageView) findViewById(R.id.imagefilter_crop_display);
mProgressBar = (ProgressBar) findViewById(R.id.imagefilter_crop_progressbar);
mLeft = (Button) findViewById(R.id.imagefilter_crop_left);
mRight = (Button) findViewById(R.id.imagefilter_crop_right);
}
private void setListener() {
mCancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 显示返回对话框
backDialog();
}
});
mDetermine.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 保存修改的图片到本地,并返回图片地址
mPath = PhotoUtil.saveToLocal(mCropImage.cropAndSave());
Intent intent = new Intent();
intent.putExtra("path", mPath);
setResult(RESULT_OK, intent);
finish();
}
});
mLeft.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 左旋转
mCropImage.startRotate(270.f);
}
});
mRight.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 有旋转
mCropImage.startRotate(90.f);
}
});
}
private void init() {
// 接收传递的图片地址
mPath = getIntent().getStringExtra("path");
try {
// 获取修改的图片
mBitmap = PhotoUtil
.createBitmap(mPath, mScreenWidth, mScreenHeight);
// 如果图片不存在,则返回,存在则初始化
if (mBitmap == null) {
Toast.makeText(ImageFilterCropActivity.this, "没有找到图片", 0)
.show();
setResult(RESULT_CANCELED);
finish();
} else {
resetImageView(mBitmap);
}
} catch (Exception e) {
Toast.makeText(ImageFilterCropActivity.this, "没有找到图片", 0).show();
setResult(RESULT_CANCELED);
finish();
}
}
/**
* 初始化图片显示
*
* @param b
*/
private void resetImageView(Bitmap b) {
mDisplay.clear();
mDisplay.setImageBitmap(b);
mDisplay.setImageBitmapResetBase(b, true);
mCropImage = new CropImage(this, mDisplay, handler);
mCropImage.crop(b);
}
/**
* 控制进度条
*/
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_PROGRESS:
mProgressBar.setVisibility(View.VISIBLE);
break;
case REMOVE_PROGRESS:
handler.removeMessages(SHOW_PROGRESS);
mProgressBar.setVisibility(View.INVISIBLE);
break;
}
}
};
/**
* 返回对话框
*/
private void backDialog() {
AlertDialog.Builder builder = new Builder(ImageFilterCropActivity.this);
builder.setTitle("OOXX");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setMessage("你确定要取消编辑吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
setResult(RESULT_CANCELED);
finish();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.create().show();
}
public void onBackPressed() {
backDialog();
}
}