Search code examples
androidseekbar

Difficulty While setting Secondary Progress in Customized SeekBar


I am working on streaming a song from the web. I have made the Customized Seek Bar, but I'm unable to set a secondary progress bar in my application. I have attached my code. Please let me know where I may have made a mistake.

This is my custom_seek_bar.xml:

<?xml version="1.0" encoding="UTF-8"?>

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@android:id/background">
    <shape>
        <corners
            android:radius="10dip" />
        <stroke
            android:width="4dip"
            android:color="#ff000000" />
        <gradient
            android:startColor="#ff734B35"
            android:centerColor="#ff8A6249"
            android:centerY="0.50"
            android:endColor="#ff91694F"
            android:angle="270" />
    </shape>
</item>
<item
    android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners
                android:radius="10dip" />
            <stroke
            android:width="4dip"
            android:color="#ff000000" />
            <gradient
                android:startColor="#ff734B35"
                android:centerColor="#ff8A6249"
                android:endColor="#ff91694F"
                android:angle="270" />
        </shape>
    </clip>
</item>
<item
    android:id="@android:id/progress">
    <clip>
        <shape>
            <corners
                android:radius="10dip" />
            <stroke
            android:width="4dip"
            android:color="#ff000000" />
            <gradient
                android:startColor="#432011"
                android:endColor="#ff4A2514"
                android:angle="90" />
        </shape>
    </clip>
</item>

This is my styles.xml:

 <style name="CustomSeekBar" parent="android:Widget.SeekBar">
      <item name="android:progressDrawable">@drawable/custom_seek_bar</item>
       <item name="android:thumbOffset">0dip</item>
</style>

I have declared it in playing.xml:

 <SeekBar
            android:id="@+id/seekBar1"
            style="@style/CustomSeekBar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="17dp"
            android:layout_marginRight="15dp"
            android:secondaryProgress="100"
            android:thumb="@drawable/point" />

This is my java file:

SeekBar songControl, songControl1;
songControl = (SeekBar) view.findViewById(R.id.seekBar1);
songControl.setEnabled(false);
txt_Timer = (TextView) view.findViewById(R.id.text_start_time);
txt_stop_timer = (TextView) view.findViewById(R.id.text_stop_time);
songControl.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub

            Log.d("Progres changed", "" + progress);

            try {

                if (mediaPlayer.isPlaying()) {
                    int seconds = (int) (progress / 1000) % 60;
                    int minutes = (int) ((progress / (1000 * 60)));
                    txt_Timer.setText("" + minutes + ":" + seconds);
                    if (fromUser) {
                        mediaPlayer.seekTo(progress);
                        songControl.setProgress(progress);

                    }
                } else
                    songControl.setProgress(progress);

            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }
    });
 @Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
    // TODO Auto-generated method stub
    Log.i("Main Activity", "Progress" + percent);

    songControl.setSecondaryProgress(percent);
    songControl.setBackgroundColor(Color.BLUE);
}

After all this I get no errors, but while playing the song I don't get the secondary progress bar in SeekBar. I suspect the problem might be in Custom_seek_bar.xml, but can't see what I'm doing wrong.


Solution

  • There is no error in your xml. You didn't see the secondary progress bar just because the color of the secondary progress is same as background. So change your background or secondary progress color to get what you want!