在java android中制作图像作为背景进行编辑

在java android中制作图像作为背景进行编辑,java,android,image,edit,Java,Android,Image,Edit,我通过以下代码创建了一个图像: Bitmap bmp = Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); try { int tile1ResID = getResources().getIdentifier("drawable/m" + String.valueOf(tileOfPoint.x) + "_" + String.valueOf(tileOfP

我通过以下代码创建了一个图像:

Bitmap bmp = Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

try {
    int tile1ResID = getResources().getIdentifier("drawable/m" + String.valueOf(tileOfPoint.x) + "_" + String.valueOf(tileOfPoint.y), "drawable", "com.example.sabtt1");

    canvas.drawBitmap(Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), tile1ResID), 256, 256, true), 0, 0, null);
    canvas.save();
}
catch (Exception e) {
}

canvas.save();

ImageView imgMap1 = (ImageView) findViewById(R.id.imgMap1);
imgMap1.setImageDrawable(new BitmapDrawable(Bitmap.createBitmap(bmp, 0, 0, 500, 500)));
现在我想把它作为背景。以便用户可以添加图像或在其上绘制。 如何将其设置为背景? 可以同时添加图像和用手指绘制吗

我将此代码用于绘图:

@Override
public void onClick(View arg0) {
    try {
        Bitmap gestureImg = gesture.getGesture().toBitmap(100, 100, 8, Color.BLACK);

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        gestureImg.compress(Bitmap.CompressFormat.PNG, 100, bos);
        byte[] bArray = bos.toByteArray();

        Intent intent = new Intent(Activity1.this, Activity2.class);

        intent.putExtra("draw", bArray);
        startActivity(intent);
    }
    catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(Activity1.this, "No draw on the string", 3000).show();
    }
}
以及用于添加和移动图像的OnDragListener

我知道我应该使用以下代码作为背景:

LinearLayout ll = new LinearLayout(this);
    ll.setBackgroundResource(R.drawable.nn);
    this.setContentView(ll);
但是通过使用此代码,我看不到其他图像


提前谢谢

您可以在主位图上绘制其他位图:

Bitmap bmp = Bitmap.createBitmap(512, 512, Bitmap.Config.ARGB_8888);
bmp = <load from resource>
Canvas canvas = new Canvas(bmp);
Bitmap gestureImg = <get bitmap from gesture or loading>
canvas.drawBitmap(gestureImg);
或者,您可以将主位图和所有其他手势/加载位图存储在单独的对象中,当您想要更新imgMap1时,您可以制作组合位图

还要将新位图用作背景,请使用:

ll.setBackgroundDrawable( new BitmapDrawable( bmp ) );

谢谢你的回答,但我应该创建一个图像,这是地图的一部分。基于该图像,用户可以添加更多图像并绘制。所以,我不能将它们全部制作在一起或同时制作。创建第一个之后,我应该让用户添加更多图像。你对此有什么想法吗?基本上你可以将所有图像保存在ArrayList中,但内存非常昂贵,每次用户完成添加图像时,你都会将ArrayList中的所有图像绘制到主地图上,并向他显示结果。是的,正如你所说,ArrayList非常昂贵。此外,我正在一个活动中创建第一个位图,在另一个活动中创建第二个位图。所以它应该在另一页中准备好。
ll.setBackgroundDrawable( new BitmapDrawable( bmp ) );