Search code examples
androidimagemergedrawabletablelayout

Merge multiple images into single image


I am trying to create application with graphic construction - empty field with opportunity to place roads, buildings etc. I used a TableLayout with 10*20 cells, which are filling with drawables on click. How can I get a whole image from all cells as a single drawable?

ConstructorActivity

    Drawable currentDrawable;

    @OnClick({R.id.road_btn, R.id.build_btn, R.id.road_turn_btn})
    void setCurrentView(ConstructorButton view) {
    currentDrawable = view.getDrawable();
    }

    private void initTable() {
    for (int row = 0; row <= 10; row++) {
        TableRow tr = new TableRow(this);
        for (int column = 0; column <= 20; column++) {
            final ImageView imageView = new ImageView(this);
            imageView.setImageResource(R.drawable.ic_grass);
            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    imageView.setImageDrawable(currentDrawable);
                }
            });
            tr.addView(imageView, 60, 60);
        }
        tableLayout.addView(tr);
    }
}

Solution

  • You can get an image for the whole view hierarchy using the drawing cache :

    public Bitmap createBitmapFromView(View v) {
        v.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
        v.setDrawingCacheEnabled(false);
        return bitmap;
    }
    

    The Bitmap can be saved, or used in a BitmapDrawable