-
效果图
-
xml布局 @mipmap/seekbar图片随意一张图都可以,这里我的图就不贴出来了
<SeekBar
android:id="@+id/seekBar"
android:layout_marginLeft="8dp"
android:layout_width="377dp"
android:layout_height="8dp"
android:layout_gravity="center"
android:layout_centerHorizontal="true"
android:progressDrawable="@drawable/seek_bar_voice_bg"
android:thumb="@mipmap/seekbar" />
- seek_bar_voice_bg.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="5dip" />
<solid android:color="#D4E3F4" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#D4E3F4" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dip" />
<solid android:color="#0A68F5" />
</shape>
</clip>
</item>
</layer-list>
- 逻辑实现
SeekBar seekBar=findViewById(R.id.seekBar);
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//获取系统最大音量
int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
seekBar.setMax(maxVolume);
//获取当前音量
int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
seekBar.setProgress(currentVolume);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {//滑动时候调用
if(fromUser){
//设置系统音量
am.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
int currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
seekBar.setProgress(currentVolume);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {//摁下的时候调用
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {//松开的时候调用
}
});