2011-07-10 5 views
0

Je n'ai pas vu ce problème couvert sur SO alors voilà. J'ai une barre de recherche qui empêche de chercher au-delà de la progression secondaire (dans ce cas, la mise en mémoire tampon musicale). Disons que la chanson dure 5 minutes, que 4 minutes ont été tamponnées et qu'elle joue à la minute. Quand je vais faire glisser le pouce, il traîne et tombe bien. Le problème est que lorsque j'arrête de glisser (sans relâcher) puis que je fais glisser à nouveau, le pouce saute rapidement de la position en cours de lecture (1 minute) à la position où je fais glisser le pouce. Quand je relâche, ça va, c'est seulement un problème avec le fait de glisser le pouce. Voici mon auditeur SeekBar ....Android SeekBar Jiggles

private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { 

    public void onProgressChanged(SeekBar seekBar, int progress, 
      boolean fromUser) { 

     int secondaryPosition = seekBar.getSecondaryProgress(); 
     if (progress > secondaryPosition) { 
      seekBar.setProgress(secondaryPosition-1); 
     } 
    } 

    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 

    public void onStopTrackingTouch(SeekBar seekBar) { 
     seekMediaPlayerToSeekBarTouch(seekBar); 
    } 

}; 

Répondre

1

Je devine que vous avez un Handler ou Thread mettre à jour le SeekBar? Je recommande de mettre en place une vérification de base pour voir si l'utilisateur gère le SeekBar afin qu'il ne continue pas à essayer de redessiner le pouce pour le SeekBar pendant qu'il est géré. Définissez simplement un booléen, tel que mSeekbarTracking à true dans la méthode onStartTrackingTouch(), puis dans le programme de mise à jour SeekBar, vérifiez que mSeekbarTracking est faux avant de tenter de le mettre à jour.

Je ne sais pas si cela va résoudre tous vos problèmes. Peut-être que vous pourriez essayer cela et voir comment cela affecte votre problème. Cela nous aidera probablement à vous aider si vous publiez le code que vous utilisez pour mettre à jour le SeekBar.

Cheers