色勾配ピッカーにSeekBar(旧式のJavaスライダー)を使用したいと考えています。私はこのようないくつかの例を見てきましたが、新しいクラスなどを作る必要があります。元のクラスを変更または上書きする方法が必要です。または、グラデーションで背景を置き換えてください。SeekBarでカラーグラデーションを作成するには?
1
A
答えて
10
私はここにあなたがそれをやっている方法を理解しました。
XMLで標準のシークバーを作成します。
<SeekBar
android:id="@+id/seekbar_font"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:layout_below="@id/color_font_text"
android:max="100"
android:progress="50"></SeekBar>
は、その後、あなたはboxShapeを作成し、その中てLinearGradientを強制してのonCreate()でシークバーをカスタマイズします。ここ
LinearGradient test = new LinearGradient(0.f, 0.f, 300.f, 0.0f,
new int[] { 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF,
0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
null, TileMode.CLAMP);
ShapeDrawable shape = new ShapeDrawable(new RectShape());
shape.getPaint().setShader(test);
SeekBar seekBarFont = (SeekBar)findViewById(R.id.seekbar_font);
seekBarFont.setProgressDrawable((Drawable)shape);
これは溶液がてLinearGradientを使用して提供に加えて、あるSeekBar Color Gradient
7
上記の現在のコードまでの画像です。進捗状況をrgbに変換するにはこのロジックを試してください。
lineColorSeekbar.setMax(256*7-1);
lineColorSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
int r = 0;
int g = 0;
int b = 0;
if(progress < 256){
b = progress;
} else if(progress < 256*2) {
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*3) {
g = 255;
b = progress%256;
} else if(progress < 256*4) {
r = progress%256;
g = 256 - progress%256;
b = 256 - progress%256;
} else if(progress < 256*5) {
r = 255;
g = 0;
b = progress%256;
} else if(progress < 256*6) {
r = 255;
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*7) {
r = 255;
g = 255;
b = progress%256;
}
lineColorSeekbar.setBackgroundColor(Color.argb(255, r, g, b));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
+0
これはうまくいきました。どのようにr、g、b与えられた進歩を得ることができますか? 2番目のカラーピッカーがあり、それに応じてスライダを更新する必要があります。 – RealCasually
+0
文字列hex = String.format( "#%02X%02X%02X"、r、g、b); – user3219446
関連する問題
- 1. Seekbar WIDGETを作成する
- 2. カラーグラデーションを生成する
- 3. コードでSeekBarインターフェイスを作成するには?
- 4. SeekBarバックグラウンドのレイヤーリストドロウアブルを作成するには?
- 5. Javafx/AWTを使用せずにカラーグラデーションを作成する方法は?
- 6. カラーグラデーションはggplot
- 7. Mapboxでラインにカラーグラデーションを使用する
- 8. カスタムスキニーを作るProgressBar/Seekbar
- 9. 自分自身の "SeekBar"を作成する
- 10. JFreechart LookUpPaintScaleカラーグラデーション
- 11. AndroidでSeekBarをカスタマイズする
- 12. アンドロイドのSeekbarをseekBarと同時にprogressBarとして使用する方法は?
- 13. android SeekBarをプログラムで定義する
- 14. Android SeekBarでセパレータを表示するには?
- 15. ggplot2のカラーグラデーションの凡例にユニットラベルを追加する
- 16. seekbar.setEnabled(false)seekbarを非表示にする
- 17. このアンドロイドを達成する方法Discrete SeekBar design?
- 18. Seekbar progress drawable異常な動作onPause
- 19. Seekbar thumb onClickイベントを聞くには?
- 20. ListViewでSeeKBarが期待通りに動作しない
- 21. SeekBar/EditTextインターラクションでエラーが発生する
- 22. 水平ProgressBarの開始カラーと終了カラーグラデーションを変更するには
- 23. SeekBar親指の真ん中にTextViewを追加するには?
- 24. 開始点、中間点、終了点の上にテキストを含む段階的なSeekbarを作成する方法
- 25. 3Dマットプリティブプロットの三角形をカラーグラデーションで塗りつぶす
- 26. 再生/一時停止トグルとseekBarウィジェットで停止ボタン機能を作成する方法
- 27. Seekbarの親指はクリック
- 28. カスタムデザインSeekBar in android
- 29. クラスinflating error Seekbar
- 30. ナビゲーション・ドローのSeekBar
このコードをお寄せいただきありがとうございます。魅力的です。 しかし、どのように色を選んだのですか? 私が得ることができる唯一のパラメターは進歩です、そして、どのように進歩に色をリンクしますか? ありがとうございます! –
それは難しい部分です。グラデーションは技術的に線形ではないので、ピッカーの位置と実際の色がプログレスバーにどのような相関があるかを独自のアルゴリズムで記述する必要があります。 – JPM
'LinearGradient'の' x2'パラメータは、シークバーの幅に基づいて調整するか、グラデーションがバー全体を正確に埋めるように調整する必要があると思います。 'GradientDrawable'(GradientDrawable.Orientation.LEFT_RIGHT、new int [] {startColor、endColor}))' – hagabaka