2016-05-08 76 views
0

我想更新自定義Seekbar的拇指的垂直位置。更新android中的垂直拇指Seekbar

目前的狀態我有

Current Status

但我想使拇指在背景的頂部邊緣到中心的是這樣

State needed

搜索條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

我創建延伸搜索欄

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透明,監守我重寫在Java類中繪製方法以在所需位置繪製拇指。