2017-05-11 21 views
0

MAX_PROGRESSは100ですが、これは進度の色に基づいて計算することができますが、今はprogressを計算する必要があります。そのようなアルゴリズムはありますか?パーセントに基づいて色を計算する方法は?

private int calculateColor(int progress) { 
     float unit = (float) progress/MAX_PROGRESS; 
     if (unit < 0) { 
      unit += 1; 
     } 

     if (unit <= 0) { 
      return mGradientColors[0]; 
     } 
     if (unit >= 1) { 
      return mGradientColors[mGradientColors.length - 1]; 
     } 

     float p = unit * (mGradientColors.length - 1); 
     int i = (int) p; 
     p -= i; 

     int c0 = mGradientColors[i]; 
     int c1 = mGradientColors[i + 1]; 
     int a = ave(Color.alpha(c0), Color.alpha(c1), p); 
     int r = ave(Color.red(c0), Color.red(c1), p); 
     int g = ave(Color.green(c0), Color.green(c1), p); 
     int b = ave(Color.blue(c0), Color.blue(c1), p); 

     return Color.argb(a, r, g, b); 
    } 
+0

そうは思わない。 – Denny

+0

問題点は何ですか? –

+0

私はパレットのシークバーをやっています、私は色に応じて対応する進捗状況にスクロールする必要があります。 – dengyuhan

答えて

0

私は事前に計算した色を提案し、キーをintとして表現される色の値であり、値がパーセントで進行中であるMap<int, int>に入れ。特定の色の割合を取得するには、get(color)を使用します。

+0

合意。それはすべきだ – Stallion

関連する問題