coder_baba
coder_baba

Reputation: 402

How to show Time format in Range Seek Bar?

I want to put 2 drawables in my sek bar. First will be minimum time and second drawable will show Max time selected by user. For this I am using THIS LIBRARY. But No luck. How can I get my desired result ? What I did is here.

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Setup the new range seek bar
    RangeSeekBar<Integer> rangeSeekBar = new RangeSeekBar<>(this);
    // Set the range
    rangeSeekBar.setRangeValues(15, 90);
    rangeSeekBar.setSelectedMinValue(20);
    rangeSeekBar.setSelectedMaxValue(88);

    // Add to layout
    FrameLayout layout = (FrameLayout) findViewById(R.id.seekbar_placeholder);
    layout.addView(rangeSeekBar);

    // Seek bar for which we will set text color in code
    RangeSeekBar rangeSeekBarTextColorWithCode = (RangeSeekBar) findViewById(R.id.rangeSeekBarTextColorWithCode);
    rangeSeekBarTextColorWithCode.setTextAboveThumbsColorResource(android.R.color.holo_blue_bright);


    rangeSeekBar.setOnRangeSeekBarChangeListener(new RangeSeekBar.OnRangeSeekBarChangeListener<Integer>() {
        @Override
        public void onRangeSeekBarValuesChanged(RangeSeekBar<Integer> bar, Integer minValue, Integer maxValue) {
            int hours = minValue / 4; // it will return hours.
            int minutes = (minValue % 4) * 15;
            Toast.makeText(getApplicationContext(), hours + " Hours - " + hours + ":" + minutes, Toast.LENGTH_SHORT).show();

        }
    });

}

Upvotes: 0

Views: 1023

Answers (1)

Amit Padekar
Amit Padekar

Reputation: 259

To get desired result you have to convert your minimum time and maximum time to minute.

String start[] = "6:00".split(":");
int min = Integer.parseInt(start[0]) * 60 + Integer.parseInt(start[1]);
String end[] = "23:49".split(":");
int max = Integer.parseInt(end[0]) * 60 + Integer.parseInt(end[1]);

rangeSeekBar.setSelectedMinValue(min);
rangeSeekBar.setSelectedMaxValue(max);

Now in

onRangeSeekBarValuesChanged(RangeSeekBar<Integer> bar, Integer minValue, Integer maxValue)
{
int minHour=minValu/60; //since both are ints, you get an int
int minMinute=minValu % 60;

int maxHour=maxValu/60; //since both are ints, you get an int
int maxMinute= maxValu % 60 ;
}

Upvotes: 2

Related Questions