2013-05-15 12 views
10

Mam dostosowany pasek wyszukiwania, w którym aktualizuję postęp i maksymalną amplitudę dźwięku. Pasek wyszukiwania zmienia się w zależności od wykrycia dźwięku, a kciuk pokazuje maksymalną amplitudę dźwięku. Chcę ustawić pozycję kciuka do określonej pozycji (Max Amblitude), tak jak ustawiamy postęp w przeglądarce. Przeszedłem przez wiele pytań i odpowiedzi, a także sprawdziłem dokumentację dla programistów. W dokumentach dla programistów wspomniano, że można podać tylko przesunięcia, które utrzymują kciuk poza ścieżką postępu.Ustawianie programowo kciuka do określonej pozycji (nie przesunięcia) seekbar?

Od Doc Developer setThumbOffset (int thumbOffset) - Ustawia kciuk, który umożliwia przesunięcie kciukiem przedłużyć poza zasięgiem toru.

Czy istnieje możliwość ustawienia kciuka w określonej pozycji. Próbkę pokazano poniżej. W tym ustawiłem przesunięcie kciuków tylko dla pokazania próbki, zamiast tego chcę ustawić kciuk na dokładną pozycję.

enter image description here

Odpowiedz

2

Myślę, że można ustawić położenie za pomocą kciuka postęp setProgress (int), w SeekBar, kciuk zostanie pokazane na końcu paska postępu.
Jeśli chcesz ustawić pozycję kciuka niezależną od postępu, możesz zaimplementować swój własny SeekBar przedłużyć AbsSeekBar, możesz odnieść się do src SeekBar.

+0

Tak natknąłem jakiś słupek pokazujący jego możliwe AbsSeekbar ale można plaese daj mi znać o wszelkich źródłach zaimplementowanych przy użyciu tego. –

+0

@ Robert'sR Możesz rzucić okiem na src AbsSeekbar tutaj: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ AbsSeekBar.java # AbsSeekBar, aby dowiedzieć się, jak kciuk jest rysowany i jak ustawia się pozycję. – Bolton

+0

@ Dokładna pozycja R oznacza, jak pokazano na obrazku ... nieznacznie daleko od faktycznego procesu? – TheFlash

1

Utwórz custom progress bar z przezroczystym kolorem postępu.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@android:id/background" 
     android:drawable="@drawable/my_background"/> 
    <item android:id="@android:id/progress"> 
     <clip android:drawable="@android:color/transparent" /> 
    </item> 
    <item android:id="@android:id/secondaryProgress"> 
     <clip android:drawable="@drawable/my_visual_progress" /> 
    </item> 

</layer-list> 

Zastosowanie setSecondaryProgress(int) z ustawienie wizualnego „postęp” na pasku postępu.

Aby przesunąć kciuk, użyj setProgress(int).

1

Nie rozumiem, co naprawdę myśli, ale jak mogę zrozumieć z tego co mówisz to, co zrobiłem Spróbuj użyć innego drawbles Pokażę wam przykład:

Twój code .java

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.drawable.Drawable; 
import android.widget.SeekBar; 

public class MainActivity extends Activity { 
    private SeekBar seekBar1; 

    private SeekBar seekBar2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     seekBar1 = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar2 = (SeekBar) findViewById(R.id.seekBar2); 
     seekBar1.setProgress(15); 
     seekBar2.setProgress(55); 
     Drawable ii = getResources().getDrawable(R.drawable.ii); 
     // Drawable iii = getResources().getDrawable(R.drawable.ii); 
     seekBar1.setThumb(ii); 
     seekBar2.setThumb(ii); 

    } 



} 

Twój problem:

enter image description here

Co można zrobić, to simple tylko zmiana nazwy tego samego rozciągliwej takiego:

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.drawable.Drawable; 
import android.widget.SeekBar; 

public class MainActivity extends Activity { 
    private SeekBar seekBar1; 

    private SeekBar seekBar2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     seekBar1 = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar2 = (SeekBar) findViewById(R.id.seekBar2); 
     seekBar1.setProgress(15); 
     seekBar2.setProgress(55); 
     Drawable ii = getResources().getDrawable(R.drawable.ii); 
     Drawable iii = getResources().getDrawable(R.drawable.ii); 
     seekBar1.setThumb(ii); 
     seekBar2.setThumb(iii); 

    } 
} 

I to jest wynik:

enter image description here