我正在创建自己的视图。现在,我要做的就是绘制带有颜色渐变的圆角矩形。

这是创建渐变的方法:

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);
        }
    }
}


按下的颜色作为参数从以下位置传递:

    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,因此渐变是相同的。

关于我在做什么错的任何想法。

谢谢你的帮助。

最佳答案

调用getWidth()getHeight()时请小心,它们可能尚未计算出来。

关于android - 渐变未显示在“自定义Android View ”中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22148658/

10-12 01:46