将多个图像合并为一个图像

Merge multiple images into single image

我正在尝试创建具有图形结构的应用程序 - 空白字段,有机会放置道路、建筑物等。我使用了带有 10*20 单元格的 TableLayout,单击时会填充可绘制对象。如何从所有单元格中获取完整图像作为单个可绘制对象?

构造函数

    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);
    }
}

您可以使用绘图缓存获取整个视图层次结构的图像:

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

可以保存Bitmap,或者在BitmapDrawable

中使用