2017-03-29 49 views
0

我有水平方向和多个ImageView的线性布局。如何使用这些图像制作单个位图?如何合并多个图像使

像这样:

enter image description here

如果有超过6个图像,然后剩余的图像去下一行。 这一个是工作水平:

 Bitmap[] parts = new Bitmap[4]; 
     Bitmap result = Bitmap.createBitmap(parts[0].getWidth() * 2, parts[0].getHeight() * 2, Bitmap.Config.ARGB_8888); 
     Canvas canvas = new Canvas(result); 
     Paint paint = new Paint(); 
     for (int i = 0; i < parts.length; i++) { 
      canvas.drawBitmap(parts[i], parts[i].getWidth() * (i % 2), parts[i].getHeight() * (i/2), paint); 
     } 
+1

作业:展开代码以处理下一行。 – greenapps

回答

0

你应该LienarLayout以下方法:

public static Bitmap loadBitmapFromView(View v) { 
Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
Canvas c = new Canvas(b); 
v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
v.draw(c); 
return b; 
} 

传递你LienarLayout对象在上述方法中采取Bitmap从View。

+0

但LL具有水平方向。如果线性布局中的图像数量超过6个,则保留至下一行。 –

+0

所以你需要把每一行的位图,然后组合,然后你做单个位图。 –