我有兩個ImageViews。 ImageView1是一個背景圖像,ImageView2是一個較小的圖像。 ImageView2的位置位於應用程序的中間位置。Android:將兩個疊加圖像組合到一個正確位置的bmp中
我想將這兩個ImageView合併到一個位圖中,以便ImageView2位於ImageView1之上。
聯合進程工作正常,但ImageView2始終位於bmp文件的左上角。
下面是我的代碼,我用來生成BMP:
ImageView iv = (ImageView)findViewById(R.id.imageView1);
ImageView iv2 = (ImageView)findViewById(R.id.imageView2);
File rootPath = new File(Environment.getExternalStorageDirectory(), "testmerge");
if (!rootPath.exists()) {
rootPath.mkdirs();
}
Toast.makeText(this, rootPath.getPath(), Toast.LENGTH_LONG).show();
File dataFile = new File(rootPath, "picture.png");
iv.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
iv.layout(0, 0, iv.getMeasuredWidth(), iv.getMeasuredHeight());
iv.setDrawingCacheEnabled(true);
Bitmap b1 = Bitmap.createBitmap(iv.getDrawingCache());
iv.setDrawingCacheEnabled(false);
iv2.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
iv2.layout(0, 0, iv2.getMeasuredWidth(), iv2.getMeasuredHeight());
iv2.setDrawingCacheEnabled(true);
Bitmap b2 = Bitmap.createBitmap(iv2.getDrawingCache());
iv2.setDrawingCacheEnabled(false);
Bitmap bmOverlay = Bitmap.createBitmap(b1.getWidth(), b1.getHeight(), b1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawBitmap(b1, 0, 0, null);
canvas.drawBitmap(b2, 0, 0, null);
try {
FileOutputStream out = new FileOutputStream(dataFile, false);
bmOverlay.compress(CompressFormat.PNG, 95, out);
} catch (IOException e) {
e.printStackTrace();
}
你能告訴我怎樣才能調整最終的位圖文件的位置,使得ImageViews將在相同的位置,因爲它在應用上顯示?
謝謝。
@Kintaro你能幫我解答這個問題嗎?你是如何完成這項任務的? – Erum