私は自分のリソースフォルダのDrawableを示すImageViewを持っています。次にImageViewの下にシークバーがあります。各ピクセルの色は、シークバーの値に応じて変更する必要があります。シークバーが最大値を持つとき、各ピクセルの 'g'と 'b'の値は0でなければならないので、赤だけが表示されるように、各ピクセルの色を変更する必要があります。シークバーを下げると変換されます。ドローイング色をAndroidのSeekBarに応じて変更してください
これは、drawableをビットマップに変換し、ピクセルを反復し、現在のシークバーの進行状況と現在の色の値に応じて色の値を変更することによって行われると思います。
これは単なるアイデアです。これまでのところ私はこれを正しい方法で実装することができませんでした。たぶんあなたの中には、コード例を挙げたり、もっと良い解決策を用意したりする人もいます。もし誰かが助けてくれたらうれしいです。
EDIT:
float colorValue = 1 - (float) seekBar.getProgress()/100; // SeekBar has 100 as maxVal
float[] colorMatrix = {
1, 0, 0, 0, 0, //red
0, colorValue, 0, 0, 0, //green
0, 0, colorValue, 0, 0, //blue
0, 0, 0, 1, 0 //alpha
};
ColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
backgroungImageView.setColorFilter(colorFilter);
問題は今、(明らかに)だけでなく、オリジナルの赤の部分が目立つ:@pskinkのヘルプ(下記のコメントを参照)で、私はものを実装することができました。すべてが赤で、これも私が望むものではありません。私が達成しようとしている目標は、シークバーが最大レベルに達すると赤い部分だけが表示されることです。 ColorMatrixでもこれが可能ならば涼しいでしょうが、私はよくわかりません。助言がありますか?アルファチャンネルで遊ぶのは助けてくれますか?
「ColorMatrixColorFilter」を参照してください – pskink
ありがとう!これは私が – MattLance
を必要としているようですあなたはあなたの 'ImageView'にそれを適用する方法を知っていれば幸いですか? – pskink