import
android.app.Activity;
import
android.graphics.Bitmap;
import
android.graphics.Canvas;
import
android.graphics.Rect;
import
android.graphics.drawable.BitmapDrawable;
import
android.os.Bundle;
import
android.os.Handler;
import
android.os.Handler.Callback;
import
android.os.Message;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.ImageView;
public
class
MainActivity
extends
Activity {
private
ImageView ivBmp1;
private
ImageView ivBmp2;
private
ImageView ivBmpMerge;
private
Button mergeBtn;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
initUi();
}
private
void
initUi() {
ivBmp1
= (ImageView) findViewById(R.id.iv_bmp1);
ivBmp2
= (ImageView) findViewById(R.id.iv_bmp2);
ivBmpMerge
= (ImageView) findViewById(R.id.iv_bmp_merge);
mergeBtn
= (Button) findViewById(R.id.btn_merge);
mergeBtn.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
showMergeBitmap();
}
});
}
private
Handler handler =
new
Handler(
new
Callback() {
@Override
public
boolean
handleMessage(Message msg) {
Bitmap
bitmap = (Bitmap) msg.obj;
ivBmpMerge.setImageBitmap(bitmap);
return
false
;
}
});
/**
*
顯示合併的圖
*/
protected
void
showMergeBitmap() {
new
Thread(
new
Runnable() {
@Override
public
void
run() {
Bitmap
bitmap = mergeBitmap();
Message
messge = handler.obtainMessage();
messge.obj
= bitmap;
handler.sendMessage(messge);
}
}).start();
}
private
Bitmap mergeBitmap() {
Bitmap
bmp1 = ((BitmapDrawable) ivBmp1.getDrawable()).getBitmap();
Bitmap
bmp2 = ((BitmapDrawable) ivBmp2.getDrawable()).getBitmap();
Bitmap
resultBitmap = Bitmap.createBitmap(ivBmpMerge.getWidth(),
ivBmpMerge.getHeight(),
Bitmap.Config.RGB_565);
Canvas
canvas =
new
Canvas(resultBitmap);
Rect
srcRect =
new
Rect(
0
,
0
,
bmp1.getWidth(), bmp1.getHeight());
Rect
dstRect =
new
Rect(
0
,
0
,
ivBmpMerge.getWidth() /
2
,
ivBmpMerge.getHeight());
canvas.drawBitmap(bmp1,
srcRect, dstRect,
null
);
srcRect
=
new
Rect(
0
,
0
,
bmp2.getWidth(), bmp2.getHeight());
dstRect
=
new
Rect(ivBmpMerge.getWidth() /
2
,
0
,
ivBmpMerge.getWidth(),
ivBmpMerge.getHeight());
canvas.drawBitmap(bmp2,
srcRect, dstRect,
null
);
return
resultBitmap;
}
}
運行效果