2013-05-15 5 views
10

Ich habe eine benutzerdefinierte Suchleiste, in der ich den Fortschritt und die maximale Amplitude des Sounds aktualisiere. Die Suchleiste variiert also je nach Tonerkennung und der Daumen zeigt die maximale Amplitude des Tones an. Ich möchte die Position des Daumens auf eine bestimmte Position (Max Amblitude) einstellen, wie wir den Fortschritt in seekbar setzen. Ich hatte viele Fragen und Antworten gelesen und auch die Entwickler-Dokumente durchgelesen. In Entwicklerdokumenten wird erwähnt, dass nur Offsets angegeben werden können, die den Daumen vom Fortschritt abhalten.Den Daumen programmatisch auf eine bestimmte Position (nicht den Offset) der Suchleiste setzen?

vom Entwickler Doc setThumbOffset (int thumbOffset) - Stellt den Daumen versetzt, dass der Daumen ermöglicht aus dem Bereich der Spur zu erweitern.

Gibt es eine Möglichkeit, den Daumen auf eine bestimmte Position zu setzen. Beispiel ist unten gezeigt. In diesem hatte ich den Daumen-Offset eingestellt, um nur ein Beispiel zu zeigen, stattdessen möchte ich den Daumen auf eine genaue Position setzen.

enter image description here

Antwort

2

Ich glaube, Sie Position Faust einstellen könnten setProgress (int Fortschritt) unter Verwendung von in SeekBar, der Daumen wird am Ende der Fortschrittsanzeige angezeigt.
Wenn Sie die Position des Daumens unabhängig vom Fortschritt einstellen möchten, können Sie Ihre eigene SeekBar extends AbsSeekBar implementieren, die Sie auf src von SeekBar verweisen können.

+0

Ja über einige Post kam sein mögliches mit AbsSeekbar zeigt aber können Sie plaese lassen Sie mich über irgendwelche Quellen von implementiert wissen, die dieses verwenden. –

+0

@SreedevR Sie können sich die Quelle von AbsSeekbar hier ansehen: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/ AbsSeekBar.java # AbsSeekBar, um zu erfahren, wie der Daumen gezeichnet wird und wie die Position gesetzt wird. – Bolton

+0

@Sreedev R genaue Position bedeutet, wie im Bild gezeigt .. ?? etwas weit vom eigentlichen Prozess? – TheFlash

1

Machen Sie eine custom progress bar mit einer transparenten Fortschrittsfarbe.

<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> 

Verwenden setSecondaryProgress(int) mit den visuellen „Fortschritt“ des Fortschrittsbalkens einstellen.

Und verwenden Sie setProgress(int), um den Daumen entsprechend zu bewegen.

1

Ich verstehe nicht, was Sie wirklich meinen, aber wie kann ich von verstehen, was Sie sagen, tun, was ich tat verschiedene drawbles mit Versuchen mich Ihnen ein Beispiel Lassen Sie zeigen:

Ihre 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); 

    } 



} 

Ihr Problem:

enter image description here

Was können Sie tun, ist simple nur die gleiche ziehbar wie folgt umbenennen:

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); 

    } 
} 

Und das ist das Ergebnis:

enter image description here