2016-05-08 7 views
0

Я хочу обновить вертикальное положение большого пальца пользовательского Seekbar.Обновить вертикальный палец в android Seekbar

В настоящее время состояние у меня

Current Status

Но я хочу, чтобы сделать большой палец к центру на верхней кромке фона, чтобы быть как этот

State needed

SeekBar XML

<SeekBar 
    android:id="@+id/track_seek_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/controls_layout" 
    android:layout_alignTop="@+id/details_layout" 
    android:layout_marginBottom="-16dp" 
    android:layout_marginTop="-16dp" 
    android:background="@android:color/transparent" 
    android:clipChildren="false" 
    android:minHeight="0dp" 
    android:paddingEnd="0dp" 
    android:paddingLeft="0dp" 
    android:splitTrack="false" 
    android:paddingRight="0dp" 
    android:paddingStart="0dp" 
    android:paddingTop="0dp" 
    android:progressDrawable="@drawable/media_progress_bar" 
    android:thumbOffset="10dp" /> 

И этого media_progress_bar.xml

<item 
    android:id="@android:id/background" 
    android:top="28dp"> 
    <shape> 
     <solid android:color="@android:color/transparent" /> 
    </shape> 
</item> 
<item 
    android:id="@android:id/secondaryProgress" 
    android:top="28dp"> 
    <scale 
     android:drawable="@android:color/transparent" 
     android:scaleWidth="100%" /> 
</item> 
<item 
    android:id="@android:id/progress" 
    android:top="28dp"> 
    <scale 
     android:drawable="@color/media_seebar_progress" 
     android:scaleWidth="100%" /> 

    <padding 
     android:bottom="3dip" 
     android:left="3dip" 
     android:right="3dip" 
     android:top="3dip" /> 
</item> 

Любые идеи, как этого добиться.

ответ

0

Я создал новый класс, который расширяет SeekBar

public class MediaSeekBar extends SeekBar { 

private Bitmap thumbDrawable; 
public MediaSeekBar(Context context) { 
    super(context); 
    thumbDrawable = BitmapFactory.decodeResource(getResources(), R.drawable.circle_prgressbar); 
} 

public MediaSeekBar(final Context context, final AttributeSet attrs) { 
     super(context, attrs); 
     thumbDrawable = BitmapFactory.decodeResource(getResources(), R.drawable.circle_prgressbar); 
    } 

    public MediaSeekBar(final Context context, final AttributeSet attrs, final int defStyle) { 
     super(context, attrs, defStyle); 
     thumbDrawable = BitmapFactory.decodeResource(getResources(), R.drawable.circle_prgressbar); 
    } 

@Override 
    protected synchronized void onDraw(final Canvas canvas) { 
     super.onDraw(canvas); 

     final int width = getMeasuredWidth(); 
     canvas.drawBitmap(thumbDrawable, (width * getProgress()/getMax()) - (thumbDrawable.getWidth()/2) , - thumbDrawable.getHeight()/2, null); 

    } 
} 

и в XML я использовал его

<com.nweave.songflip.custom.MediaSeekBar 
     android:id="@+id/track_seek_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/controls_layout" 
     android:layout_alignTop="@+id/details_layout" 
     android:background="@android:color/transparent" 
     android:clipChildren="false" 
     android:minHeight="0dp" 
     android:paddingEnd="0dp" 
     android:splitTrack="false" 
     android:paddingLeft="0dp" 
     android:paddingRight="0dp" 
     android:paddingStart="0dp" 
     android:paddingTop="-16dp" 
     android:thumb="@android:color/transparent" 
     android:progressDrawable="@drawable/media_progress_bar" 
     android:thumbOffset="10dp" /> 

Пожалуйста, позаботьтесь бегунка прозрачен в XML, потому что я переопределить метод draw в классе Java для рисования большого пальца в желаемой позиции.

 Смежные вопросы

  • Нет связанных вопросов^_^