Java Android:绘制位图的数组列表会产生黑色背景

Java Android:绘制位图的数组列表会产生黑色背景,java,android,graphics,Java,Android,Graphics,这是我第一次在这里提问,所以我会尽量保持话题不变。我试图通过创建一个大小合适的位图对象数组列表并按顺序绘制它们来随机生成背景。顺便说一下,这个实现可以很好地加载单个位图;这只是一张清单 在我开始编写代码之前,我想指出,理想情况下,我会通过添加单个像素或分片来制作一个位图,并且确实尝试了一些变化,但它们都会导致黑屏;我开始觉得这可能是我在画布上画画的问题。不管怎么说,我的情况如下: 首先,我生成随机ArrayList,现在只使用3种颜色。我想让它返回列表,但它只是线程中引用线程变量之一的私有方法,

这是我第一次在这里提问,所以我会尽量保持话题不变。我试图通过创建一个大小合适的位图对象数组列表并按顺序绘制它们来随机生成背景。顺便说一下,这个实现可以很好地加载单个位图;这只是一张清单

在我开始编写代码之前,我想指出,理想情况下,我会通过添加单个像素或分片来制作一个位图,并且确实尝试了一些变化,但它们都会导致黑屏;我开始觉得这可能是我在画布上画画的问题。不管怎么说,我的情况如下:

首先,我生成随机ArrayList,现在只使用3种颜色。我想让它返回列表,但它只是线程中引用线程变量之一的私有方法,所以它不重要

    private void genMap(Resources res)
    {
        // Load basic tiles.
        Bitmap green = BitmapFactory.decodeResource(res, R.drawable.green);
        Bitmap red = BitmapFactory.decodeResource(res, R.drawable.red);
        Bitmap blue = BitmapFactory.decodeResource(res, R.drawable.blue);

                    // All tiles must be the same size.
        int tile_width = green.getWidth();
        int tile_height = green.getHeight();
        int num_x = mCanvasWidth / tile_width;
        int num_y = mCanvasHeight / tile_height;

        for (int j = 0; j < num_y; j++)
        {
            for (int i = 0; i < num_x; i++)
            {
                double r = Math.random();
                Bitmap tile;
                if (r <= 1/3) {tile = green;}
                else if (r <= 2/3) {tile = red;}
                else {tile = blue;}
                // Create a new Bitmap in order to avoid referencing the old value.
                mBackgroundImages.add(Bitmap.createBitmap(tile));
            }
        }
    }
private void类型图(参考资料)
{
//加载基本瓷砖。
位图绿色=位图工厂.decodeResource(res,R.drawable.green);
位图红色=位图工厂.decodeResource(res,R.drawable.red);
位图蓝色=位图工厂.decodeResource(res,R.drawable.blue);
//所有瓷砖的尺寸必须相同。
int tile_width=green.getWidth();
int tile_height=green.getHeight();
int num_x=mcanvas宽度/瓷砖宽度;
int num_y=mCanvasHeight/瓷砖高度;
对于(int j=0;j如果(r您是否仔细检查了下一行的优先顺序

((x + y * (mCanvasWidth/tile_width)))
有趣的问题是:你画的是纯色吗?我还想看看这是否真的是位图:

mBackgroundImages.add(Bitmap.createBitmap(tile));

实际上,您可以保留引用,而不是创建大量位图,但这可以在以后实现

肯定是一种平铺算法。我认为问题必须处理图像,因为如果存在平铺问题,通常图像图形会有奇怪的偏移。
((x + y * (mCanvasWidth/tile_width)))
mBackgroundImages.add(Bitmap.createBitmap(tile));