我的数字在1到100之间。每个数字都必须改变视图的颜色。
我应该使用什么?我想使用画布,但我的形象是这样的:
如果我使用画布,我必须知道此图像的RGB算法,不是吗?它变成绿色到红色。
我一直在谈论这个话题,我该怎么办?你推荐什么?
My Canvas类是;
public class CircleCanvasView extends View {
Paint paint;
Path path;
int level = 0;
public CircleCanvasView(Context context, int level) {
super(context);
init();
this.level = level;
}
public CircleCanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CircleCanvasView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(10);
paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(50, 50, 30, paint);
}
答案 0 :(得分:0)
如果我使用画布,我必须知道此图像的RGB算法,不是吗? 它变成绿色到红色。
不是真的。你需要的是一个颜色插补器。而且你想要在100步之间改变颜色。你有你的startColor和你的endColor,两个int值。通过颜色类,您可以获得它们的单个组件:
int alpha = Color.alpha(startColor);
int red = Color.red(startColor);
int blue = Color.blue(startColor);
int green = Color.green(startColor);
和
int endalpha = Color.alpha(endColor);
int endred = Color.red(endColor);
int endblue = Color.blue(endColor);
int endgreen = Color.green(endColor);
你想要像
这样的东西 int cAlpha = alpha + factor * (endAlpha - alpha);
int cRed = red + factor * (endAlpha - red);
int cBlue = blue + factor * (endAlpha - blue);
int cGreen = green + factor * (endAlpha - green);
0 <= factor <= 1
当factor为0时,你有开始组件,当factor为1时{y} enter code here
你有最终组件。要获得每一步的颜色:
int colorAtStep = Color.argb(cAlpha, cRed, cBlue, cGreen);