我正在使用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);
答案 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;
}
}
}
这是我自己的代码段,请在使用前进行编辑,如果您的问题得到解决,请与我们联系。