Mam dwa obrazy widoków. ImageView1 to obraz tła, a ImageView2 to mniejszy obraz. Pozycja ImageView2 znajduje się gdzieś pośrodku aplikacji.Android: połącz dwa nakładki obrazów na bmp z prawidłową pozycją
Chciałbym połączyć te dwa ImageView w bitmapę tak, aby ImageView2 był na szczycie ImageView1.
Proces łączenia działa dobrze, ale ImageView2 jest zawsze w lewym górnym rogu pliku bmp.
Poniżej jest mój kod, który używany do generowania 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();
}
możesz mi powiedzieć jak mogę ustawić pozycję końcowego pliku bitmapy tak, że ImageViews będzie w takiej samej sytuacji, jak to wyświetlać w aplikacji?
Dzięki.
@Kintaro możesz mi pomóc w tej odpowiedzi, w jaki sposób osiągnąłeś to zadanie? – Erum