このコードでLineageRadientで色相勾配を作りました:(Color.parseColor
でシンプルにできたかもしれませんが、これは私の意図するところでなければなりません。いずれかの描画可能。)わずかにオフセットされた色を使用してこの結果を生成LineageRadientが指定された位置からオフセットされて描画されます
colors = new int[]{ Color.HSVToColor(new float[]{0, 1, 1}),
Color.HSVToColor(new float[]{60, 1, 1}),
Color.HSVToColor(new float[]{120, 1, 1}),
Color.HSVToColor(new float[]{180, 1, 1}),
Color.HSVToColor(new float[]{240, 1, 1}),
Color.HSVToColor(new float[]{300, 1, 1}),
Color.HSVToColor(new float[]{360, 1, 1}) };
Shader shader = new LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP);
paint.setShader(shader);
は、緑色領域が小さすぎると青の領域は、予想される結果と比較して大きすぎます。
私はすべてをチェックします。私は、同じ結果、位置引数にnull
の代わりにnew float[]{0f, 1/6f, 2/6f, 3/6f, 4/6f, 5/6f, 1f}
を使用しようとしました。これはバグかもしれません。
これはthis postでもthis oneでもないことに注意してください。これらは私の場合ではないコードで設定された不正な勾配の停止に関するものです。それはthis oneに関連するかもしれませんが、私はどのように見えません。
編集:これは、不等な位置を色に設定することで解決できる可能性がありますが、これらの正確な位置はどのように計算できますか?
正直、実際と予想の唯一の違いはいくらか相殺されているようです。 – natario
これは私が解決しようとしているものであり、私が提供したコードの外にある私のコードでは何も原因ではありません。 –
はい、あります。 360,1,1の代わりに0,1,1を最後の色として使用するとどうなりますか? – natario