android 怎么实现类似SeekBar的单向调节改成双向调节范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么实现类似SeekBar的单向调节改成双向调节范围相关的知识,希望对你有一定的参考价值。

参考技术A 网上有个重写View实现的,SeekBarPressure

以下是一个使用SeekBar来调节系统音量的实例:
XML代码:
<SeekBar
android:id="@+id/sound"
android:layout_width="150px"
android:layout_height="10px"
android:max="100" //设置拖动条最大值
android:progress="10" //设置拖动条当前值
android:progressDrawable="@layout/seekbar_style" //拖动条样式
android:thumb="@layout/thumb" /> //滑块样式

seekbar_style.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" />
<gradient android:startColor="#ffffffff"
android:centerColor="#ff000000" android:endColor="#ff808A87"
android:centerY="1" android:angle="270" />
</shape>
</item>

<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="10dip" />
<gradient android:startColor="#ffffffff"
android:centerColor="#ffFFFF00" android:endColor="#ffAABD00"
android:centerY="1" android:angle="270" />
</shape>
</clip>
</item>
</layer-list>

thumb.xml:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态 -->
<item
android:state_pressed="true"
android:drawable="@drawable/thumb_normal"
/>

<!-- 普通无焦点状态 -->
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/thumb_normal"
/>

</selector>

bacon_seekbar.xml:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:id="@+android:id/background"
android:drawable="@drawable/thumb_normal" />
<item
android:id="@+android:id/SecondaryProgress"
android:drawable="@drawable/thumb_normal" />
<item
android:id="@+android:id/progress"
android:drawable="@drawable/thumb_normal" />
</layer-list>

JAVA代码:
public class PianoActivity extends Activity
/** Called when the activity is first created. */
private ImageButton imageButton_white1;
private MediaPlayer mediaPlayer01;
public AudioManager audiomanage;
private TextView mVolume ; //显示当前音量
public SeekBar soundBar;
private int maxVolume, currentVolume;

private int volume=0; //初始化声音

@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mediaPlayer01 = new MediaPlayer();

imageButton_white1=(ImageButton)findViewById(R.id.white1);
final SeekBar soundBar=(SeekBar)findViewById(R.id.sound); //音量设置
mVolume = (TextView)findViewById(R.id.mVolume);
audiomanage = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

maxVolume = audiomanage.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //获取系统最大音量
soundBar.setMax(maxVolume); //拖动条最高值与系统最大声匹配
currentVolume = audiomanage.getStreamVolume(AudioManager.STREAM_MUSIC); //获取当前值
soundBar.setProgress(currentVolume);
mVolume.setText(currentVolume*100/maxVolume + " %");

soundBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() //调音监听器

public void onProgressChanged(SeekBar arg0,int progress,boolean fromUser)

audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
currentVolume = audiomanage.getStreamVolume(AudioManager.STREAM_MUSIC); //获取当前值
soundBar.setProgress(currentVolume);
mVolume.setText(currentVolume*100/maxVolume + " %");


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


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


);

TextView的XML没有给出,需要自己添加。本回答被提问者和网友采纳

以上是关于android 怎么实现类似SeekBar的单向调节改成双向调节范围的主要内容,如果未能解决你的问题,请参考以下文章

android studio怎么修改seekbar样式

Android : SeekBar 实现图片旋转缩放

android seekbar 4.0样式 怎么出来2.3

androd中怎么替换android seekbar 刻度的系统滑块图标

Android SeekBar,动态显示进度且随SeekBar一起移动

Android技术分享| 自定义View实现使用更方便的SeekBar