在android中创建一个图像并重新绑定到ImageButton

时间:2010-10-24 21:28:44

标签: android android-ui

我使用以下代码打算创建一个半白半黑的图像并将其放在一个按钮上。 我的代码出了什么问题? (后者我们想要使用一个更复杂的逻辑,关于什么像素是白色的,什么是黑色但它应该仍然是黑色和白色)

int height = 100;
int width = 100;

quadratImage = Bitmap.createBitmap(
        width, 
        height, 
        Bitmap.Config.ALPHA_8);
for (int x = 0; x < width; x++){
    for (int y = 0; y < height; y++){
        int color;

        if (x< 50){

            color = R.color.black;

        }
        else{
            color = R.color.white;
        }

        quadratImage.setPixel(
                x, y, color);
    }
}
quadratImage.prepareToDraw();
imageButton.setImageBitmap(quadratImage);

我的颜色定义为:

<color name="black">#000000</color>
<color name="white">#ffffff</color>

2 个答案:

答案 0 :(得分:1)

如果你想将一个图像拆分成4就无法工作了,你会把它分成两半黑色,半白色。

您需要在if(x <50)(和其他条件)大括号内放置一个测试,以根据y值改变颜色。

好的,您的评论指出,您需要

Resources res = this.getResources();

上面某处,然后

color = res.getColor(R.color.black);

和白色

答案 1 :(得分:1)

首先,当您直接绘制到Bitmap时,颜色的int不是颜色的资源ID,而是ARGB实际颜色值的十六进制表示(例如,黑色为0xff000000,白色为0xffffffff) )。你也可以通过getResources()获取这个值.getColor(colorResourceId)。

此外,不是试图逐个像素地直接绘制位图,而是学会使用Android的Canvas工具 - 你只需用白色填充画布,然后使用drawRect(http://developer.android.com/reference/android) /graphics/Canvas.html#drawRect(float,float,flove,love,android.graphics.Paint))一个黑色矩形到屏幕的另一半。与嵌套循环相比,它的代码要少得多,系统可以使用硬件加速和其他快捷方式优化画布绘画,而不是像素一样逐点形成整个位图。