package com.myc;
import imageUtil.ImageUtil;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.ImageView;
public class SketchActivity extends Activity {
private final int PROGRESS_WAIT_VISIBLE = 1;
private final int PROGRESS_WAIT_GONE = 2;
private final int IMAGEVIEW_INVALIDATE = 3;
private ImageView mImageView;
private Bitmap mBitmap;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case PROGRESS_WAIT_VISIBLE:
setProgressBarIndeterminateVisibility(true);
break;
case PROGRESS_WAIT_GONE:
setProgressBarIndeterminateVisibility(false);
break;
case IMAGEVIEW_INVALIDATE:
mImageView.setImageBitmap(mBitmap);
mImageView.invalidate();
break;
default:
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.sketch);
mImageView = (ImageView) findViewById(R.id.sketch_image);
cancelSketch();
doSketch();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(1, 1, 1, "素描");
menu.add(1, 2, 2, "取消");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case 1:
doSketch();
break;
case 2:
cancelSketch();
break;
default:
break;
}
return true;
}
private void cancelSketch() {
Bitmap bmp = BitmapFactory.decodeStream(getResources().openRawResource(R.drawable.image));
int width = bmp.getWidth();
int height = bmp.getHeight();
int[] pixel = new int[width * height];
bmp.getPixels(pixel, 0, width, 0, 0, width, height);
mBitmap = Bitmap.createBitmap(width, height, bmp.getConfig());
mBitmap.setPixels(pixel, 0, width, 0, 0, width, height);
mImageView.setImageBitmap(mBitmap);
bmp.recycle();
}
private void doSketch() {
new Thread(new Runnable() {
public void run() {
try {
mHandler.sendEmptyMessage(PROGRESS_WAIT_VISIBLE);
mBitmap = ImageUtil.sketch(mBitmap);
mHandler.sendEmptyMessage(IMAGEVIEW_INVALIDATE);
} catch (Exception e) {
Log.e("sketch", e.getMessage());
} finally {
mHandler.sendEmptyMessage(PROGRESS_WAIT_GONE);
}
}
}).start();
}
}