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.
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!