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