在android sdk中拼贴瓷砖并用作背景

时间:2010-04-04 23:40:55

标签: java android

在学习Android开发的过程中,我坚持使用图形技术。我的目标非常简单:

  1. 拍摄n张小图像并构建一个比屏幕大的随机图像,可以滚动。
  2. 让动画对象在其上移动
  3. 我已经看过SDK示例,尤其是Lunar Lander,但有些事情我完全无法理解。我有一个鸟类观点计划(在我脑海中看起来相当合理):

    如何将图块合并为一个大图像? 背景是静态的,所以我想我应该这样做:

    1. 使用refs to tiles
    2. 创建一个二维数组
    3. 制作一个大型Drawable并在其上绘制瓷砖
    4. 在init中绘制这个大图像作为背景
    5. 在每个onDraw上重绘移动对象的前一个点的背景,以及新位置的移动对象
    6. 问题在于动手。我用“Bitmap img1 = BitmapFactory.decodeResource(res,R.drawable.img1)”加载小图像,但那么呢?我应该制作一个画布并使用“canvas.drawBitmap(img1,x,y,null);”绘制图像吗?如果是这样,如何从中获取Drawable / Bitmap?

      我完全迷失在这里,非常感谢一些帮助(我当然会感谢一般的提示,但我主要是想了解Graphics对象)。为了让你,亲爱的读者,看到我的困惑程度,我将加入我最后的绝望尝试:

      Drawable drawable;
      Canvas canvas = new Canvas ();
      Bitmap img1 = BitmapFactory.decodeResource (res, R.drawable.img1); // 50 x 100 px image
      Bitmap img2 = BitmapFactory.decodeResource (res, R.drawable.img2); // 50 x 100 px image
      canvas.drawBitmap (img1, 0, 0, null);
      canvas.drawBitmap (img2, 50, 0, null);
      
      drawable.draw (canvas); // obviously wrong as draw == null
      this.setBackground (drawable); 
      

      提前致谢

1 个答案:

答案 0 :(得分:0)

我终于明白了,我需要将一堆Bitmaps拼接在一起的基本问题是BitmapDrawable:

Bitmap myImage = Bitmap.createBitmap(450, 300, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(myImage);
Bitmap img1 = BitmapFactory.decodeResource (res, R.drawable.img1); // 50 x 100 px image
Bitmap img2 = BitmapFactory.decodeResource (res, R.drawable.img2); // 50 x 100 px image
canvas.drawBitmap (img1, 0, 0, null);
canvas.drawBitmap (img2, 50, 0, null);
this.setBackgroundDrawable(new BitmapDrawable(myImage)); 

我显然已经将它与Canvas和Bitmap之间的关系向后推,我认为Canvas是一个空白的画面,可以在上面画画。显然(如果我这次做对了)它连接到一个Bitmap,如果有那个就可以使用它。

我仍然不知道如何在onDraw(Canvas)函数中获取它,但这解决了我遇到的问题。