2011-10-07 84 views
0

我想創建一個用拇指改變顏色,當用戶按下時改變seekbar,當用戶放開時改回。我設法改變拇指繪製拇指。不過,我還必須在java中設置可繪製的邊界,以便在更改後顯示它。現在,當用戶放開滑塊並恢復到其原始可繪製狀態時,它將可繪圖重置爲零位置,並將進度保留在應該出現的位置。我已經嘗試使用全局變量來重置drawbar更改後的seekbar進度,但似乎不起作用。如果我使用靜態整數來重置進度,它將以我希望的方式工作。Android更改Seekbar拇指與Java導致拇指位置重置

有點新的android和我不知道我在做什麼錯。

這是觸摸時改變drawable的代碼。

private void Seek_Height_Click() { 
    Drawable myThumb = getResources().getDrawable(R.drawable.slider_button_click); 
    myThumb.setBounds(new Rect(0, 0, myThumb.getIntrinsicWidth(),myThumb.getIntrinsicHeight())); 
    Height_of_Target_skbr.setThumb(myThumb); 
    Height_of_Target_skbr.setThumbOffset(-1); 
} 

這是將拇指設置回原始繪圖的代碼。

private void Seek_Height_UnClick() { 
    Drawable myThumb = getResources().getDrawable(R.drawable.slider_button); 
    myThumb.setBounds(new Rect(0, 0, myThumb.getIntrinsicWidth(),myThumb.getIntrinsicHeight())); 
    Height_of_Target_skbr.setThumb(myThumb); 
    Height_of_Target_skbr.setThumbOffset(-1); 
    Height_of_Target_skbr.setProgress(Height_Prog_int); 
} 

這是調用上述方法的代碼。

this.Height_of_Target_skbr.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      returnHeight_skbr(); 
      Seek_Height_UnClick(); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      returnHeight_skbr(); 
      Seek_Height_Click(); 
     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      returnHeight_skbr(); 
     } 
    }); 

回答

1

我是能夠使創建的文件夾中繪製一個樣式,然後設置拇指提拉到風格在使用這項工作。

我推薦本教程來完成這項工作。 http://www.youtube.com/watch?v=zXXCFmfJMNw

的拇指形狀代號

<?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/slider_button_click"> 
</item> 
<item 
    android:drawable="@drawable/slider_button"> 
</item> 
</selector>