渐变不显示在自定义Android视图中

时间:2014-03-03 13:57:39

标签: android view gradient

我正在创建自己的观点。现在我想做的就是画一个带有颜色渐变的圆角矩形。

以下是我创建渐变的方法:

public void changePressedColor(int[] colors){
    if (colors != null){
        if (colors.length == 2){
            pressedcolors = colors;
            whenpressed = new LinearGradient(0,0,getWidth(),getHeight(),pressedcolors[0],pressedcolors[1], Shader.TileMode.MIRROR);
        }
    }
}

Wherre按下的颜色作为参数传递:

    int[] pc = new int[2];
    pc[0] = Color.rgb(0,0,50);
    pc[1] = Color.rgb(114,112,255);

然后当我画画时,我这样做:

protected void onDraw(Canvas canvas){

    painter.setShader(whenpressed);
    painter.setStyle(Paint.Style.FILL);
    canvas.drawRoundRect(rect,rx,ry,painter);

    painter.setShader(null);
    painter.setStyle(Paint.Style.STROKE);

    painter.setColor(textColor);
    canvas.drawText(text,cx,cy+offsety,painter);
}

问题是没有出现渐变。而是有一种等于渐变的第一种颜色的纯色。视图的高度,rect和因此渐变是相同的。

知道我做错了什么。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

致电getWidth()getHeight()时要小心,它们可能尚未计算过。