Android中基于级别的视图颜色

时间:2015-03-25 08:55:20

标签: android canvas drawable

我的数字在1到100之间。每个数字都必须改变视图的颜色。

我应该使用什么?我想使用画布,但我的形象是这样的:

enter image description here

如果我使用画布,我必须知道此图像的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);



}

1 个答案:

答案 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);