我正在创建自己的观点。现在我想做的就是画一个带有颜色渐变的圆角矩形。
以下是我创建渐变的方法:
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和因此渐变是相同的。
知道我做错了什么。
感谢您的帮助。
答案 0 :(得分:1)
致电getWidth()
和getHeight()
时要小心,它们可能尚未计算过。