2015-03-25 28 views
0

我的數字在1 - 100之間。每個數字都必須改變視圖的顏色。Android中基於水平的視圖顏色

我應該使用什麼?我想用畫布,但我的形象是這樣的:

enter image description here

如果我使用的畫布,我要知道這個圖像RGB算法,不是嗎?它變成綠色變成紅色。

我已經討論過這個話題,該怎麼辦?你有什麼建議?

My Canvas class is;

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

如果我使用的畫布,我要知道這個圖像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

時的因素是你有0啓動組件,當因子是1時enter code here你有e nd componets。爲了讓顏色在每一個步驟:

int colorAtStep = Color.argb(cAlpha, cRed, cBlue, cGreen); 
+0

或只使用ArgbEvaluator – pskink 2015-03-25 09:14:55

+1

@pskink,謝謝,我從來沒有聽說過的。我趕緊看了它,它可從API 11 – Blackbelt 2015-03-25 09:16:50

+0

哦進來,不被一個穴居人,誰使用API​​ 11?弗雷德弗林斯頓和他的家人? :-) – pskink 2015-03-25 09:20:20