web-dev-qa-db-ja.com

Android 2本の親指を持つシークバー

この質問のバリエーションはインターネット上で見つけることができますが、答えはありません。

範囲が2つあるシークバーが必要です。私は自分でこれをプログラムするつもりですが、Androidの経験が不足しています。誰かがどこから始めればいいのか教えてもらえますか。つまり、何かを拡張する必要があることはわかっていますが(おそらくProgressBar)、どうすればそれを行うことができますか?標準シークバーのすべての機能を本当に再作成する必要がありますか、それとももっと簡単な方法がありますか?

もちろん、完全なソリューションも大歓迎です;)

55
SeeDoubleYou

私もこれを探していましたが、役に立ちませんでした。そこで、新しいウィジェットを作成しました。気軽に使用してください。 https://github.com/anothem/Android-range-seek-bar

Screenshot of RangeSeekBar

109
Stephan Tittel

「私もこれを探していましたが、役に立たなかったので、新しいウィジェットを作成しました。自由に使用してください。 https://code.google.com/p/range-seek-bar/

この例のStephanリンクはうまく機能します!ただし、回答を得るには、ユーザーはいずれかの親指を押す必要があります。ユーザーがバーを押すと、最も近い親指がその位置に移動し、通常のように動作することを望みました。

次のようなコード例でこれを実装しました。

_private final Thumb getClosestThumb(float touchX)

{
    double xValue = screenToNormalized(touchX);        
    return (Math.abs(xValue - normalizedMinValue) < Math.abs(xValue - normalizedMaxValue)) ? Thumb.MIN : Thumb.MAX;
}
_

そして、「public boolean onTouchEvent(MotionEvent event)」で、

_if(pressedThumb == null),
   pressedThumb = getClosestThumb(mDownMotionX);
_
27
Atte Backenhof

左右のアイコンが付いたウィンドウ付きのシークバー。
プリセット可能な最小ウィンドウサイズと自動クロスオーバー防止。

Screenshot of windowed-seek-bar

https://bitbucket.org/nimbusgb/windowed-seek-bar のMercurialリポジトリ

3
nimbusgb

私はanothem/Android-range-seek-barライブラリを使用しました

https://github.com/anothem/Android-range-seek-bar

Xmlで

<org.florescu.Android.rangeseekbar.RangeSeekBar
            Android:id="@+id/pricebar_with_label"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            rsb:absoluteMinValue="20"
            rsb:absoluteMaxValue="150"
            Android:layout_marginLeft="10dp"
            Android:layout_marginRight="10dp"
            />

enter image description here

2
Nilesh Panchal

これ は、私が提案できる最高の1つです。

1