我希望有一个SeekBar
拇指在用户与之交互时显示(通过拖动到所需位置),并在交互后消失。
今天我的SeekBar
看起来像这样:
<SeekBar android:id="@+id/seekBar_volume"
android:layout_width="fill_parent"
android:progressDrawable="@drawable/custom_player_seekbar_background"
android:paddingTop="10px"
android:paddingBottom="10px"
android:thumb="@drawable/myThumb"
android:paddingLeft="30px"
android:paddingRight="30px"
android:minHeight="6dip"
android:maxHeight="6dip"
android:layout_height="wrap_content"
android:layout_centerVertical="true"/>
拇指位置仅随用户交互而变化(类似于“音量控制”)。
seekBarVolume.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar arg0) {
}
public void onStartTrackingTouch(SeekBar arg0) {
}
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
我尝试使用selector
的功能,用自定义的xml设置拇指的drawable来处理我想要的不同状态,但它不起作用= /
提前感谢您提供任何帮助
答案 0 :(得分:2)
感谢Romain Guy和一些错误修复,它完美运行......
seekBarVolume.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
seekBarVolume.setThumb(null);
}
public void onStartTrackingTouch(SeekBar arg0) {
seekBarVolume.setProgress(0);
drawable = getResources().getDrawable(R.drawable.bt_do_player);
final int quarterHeight = drawable.getIntrinsicHeight()/4;
final int halfWidht = drawable.getIntrinsicWidth()/2;
drawable.setBounds(new Rect(-halfWidht,
-quarterHeight,
halfWidht,
3*quarterHeight));
seekBarVolume.setThumb(drawable);
seekBarVolume.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
}
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});