Java 如何在android中创建二维颜色渐变

Java 如何在android中创建二维颜色渐变,java,android,graphics,Java,Android,Graphics,我正在设计一个简单的绘画程序,我需要制作一个颜色选择器视图,供用户选择背景和画笔颜色。我认为最好的方法是将颜色int的rgb分量一分为二,然后将它们添加到一个矩形中,垂直像素是“rb”部分,水平像素是“bg”部分。例如:绿色-ff00ff00将被分解为00f和f00,然后用ff000000添加和或以保留alpha。也许我的数学计算错了,因为我得到的是一系列的正方形,而不是一个连续的梯度。以下是相关代码: int width = 500, height = 500; int col

我正在设计一个简单的绘画程序,我需要制作一个颜色选择器视图,供用户选择背景和画笔颜色。我认为最好的方法是将颜色int的rgb分量一分为二,然后将它们添加到一个矩形中,垂直像素是“rb”部分,水平像素是“bg”部分。例如:绿色-ff00ff00将被分解为00f和f00,然后用ff000000添加和或以保留alpha。也许我的数学计算错了,因为我得到的是一系列的正方形,而不是一个连续的梯度。以下是相关代码:

    int width = 500, height = 500;
    int color = 0, xColor = 0, yColor = 0, MAX_HALF = 0xfff;
    bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
    for(int x = 0; x < width; x++){
        for(int y = 0; y < height; y++){
            xColor = x * MAX_HALF / width;
            yColor = (y * MAX_HALF / height) << 12;
            color = xColor | yColor | 0xff000000;
            bitmap.setPixel(x,y,color);
        }
    }
    canvas.drawBitmap(bitmap,0,0,null);
这就是我得到的图像


是代码还是数学?

有两种主要方法可以通过可绘制的图形来实现:

使用两个线性渐变 使用两个径向渐变

检查此链接


令人惊叹的我马上就去试试。多谢各位: