Большой палец SeekBar появляется только при касании - PullRequest
2 голосов
/ 06 октября 2011

Я хочу иметь 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 для обработки различных состояний, которые я хотел, но это не сработало = /

Заранее спасибо за любую помощь

1 Ответ

2 голосов
/ 07 октября 2011

Благодаря 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);
     }
});
...