我正在创建自己的视图。现在,我要做的就是绘制带有颜色渐变的圆角矩形。
这是创建渐变的方法:
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/