添加图像作为背景,并将其他图像放在其上

时间:2012-09-26 18:22:35

标签: java android image background

我正在使用Canvas-和Bitmap类创建图像。我想将其设置为用户的背景。然后我想在它上面添加更多图像。

这是应该作为背景的图像代码。

ImageView imgMap1 = (ImageView) findViewById(R.id.imgMap1);
imgMap1.setImageDrawable(new BitmapDrawable(Bitmap.createBitmap(bmp, 0, 0, 500, 500)));

这是使其成为背景的代码:

LinearLayout ll = new LinearLayout(this);
ll.setBackgroundResource(R.drawable.nn);
this.setContentView(ll);

问题在于:当我将其设置为背景时,我再也看不到另一张照片了。 我怎样才能做到这一点? 提前致谢。

其他图像将添加到布局中。它们可以通过手指触摸移动。用户可以通过手指重新定位它们。

ImageView i1 = (ImageView) findViewById(R.id.Image1);
    ImageView i2 = (ImageView) findViewById(R.id.Image2);

2 个答案:

答案 0 :(得分:0)

布局是从XML文件中自上而下构建的,或者是按照在代码中添加元素的顺序构建的。听起来您的其他图像首先被添加到布局中,或者作为XML文件中的更高元素,或者在代码中更早。您需要将其他代码添加为完整答案的上下文。

答案 1 :(得分:0)

注意,您可以使用Bitmap See the Android Reference

直接将ImageView设置为setImageBitmap(Bitmap bm)的内容

然后谈谈你的问题。

首先,创建自己的类扩展View; 其次,使用位图加载背景图像和叠加图像 第三,调用onTouch事件,以便onDraw方法将使用onTouch

返回的坐标自动重绘覆盖图像

类似的东西:

public class dragndrop extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {

    // using this to load your background image
    BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inPreferredConfig = Bitmap.Config.RGB_565;  // this is not a must       
    bmBackground = BitmapFactory.decodeFile(filePath, opt);
    super.onCreate(savedInstanceState);
    DrawView dv = new DrawView(dragndrop.this);
    setContentView(dv);
}


public class DrawView extends View {

    Point coordinate;

    public DrawView(Context context) {
        super(context);
        setFocusable(true); //necessary for getting the touch events
    }

    @Override 
    protected void onDraw(Canvas canvas) {

        // assume you have already load your background image as bitmap
        canvas.drawBitmap(bmBackground, 0, 0, null);

    // assume bm is the overlay image you need to put on top,
        // the method here will draw the object with the coordinate you give
    canvas.drawBitmap(bm, coordinate.x, coordinate.y, null);
    }



   // events when touching the screen
    public boolean onTouchEvent(MotionEvent event) {
        int eventaction = event.getAction(); 

        int x = (int)event.getX(); 
        int y = (int)event.getY(); 

        switch (eventaction ) { 

        case MotionEvent.ACTION_DOWN: 
        // add code here to determine the point user touched is within the object or not

                    break;
                }
              }

             break; 


        case MotionEvent.ACTION_MOVE:   // touch 'n' drag 

            // pass the touch point to your object
            coordinate.x = x;
            coordinate.y = y;

            break; 

        case MotionEvent.ACTION_UP: 
            // touch drop - just do things here after dropping

             break; 
        } 
        // redraw the canvas
        invalidate(); 
        return true; 

    }


}


}

这是我自己的代码段,请在使用前进行编辑,如果您的问题得到解决,请与我们联系。