2011-02-08 5 views
0

J'ai champ personnalisé avec curseur de volume (ligne de couleur juste), Je veux mettre à jour curseur sur le mouvement du trackpad, est-il d'une autre manière puis invoquer invalider? Parce que c'est vraiment lent pour moi, une zone seulement essayé mais invalidant mais avec le même résultat. Donc, y a-t-il une façon de repeindre une partie du champ sans invalider?BlackBerry invalider la vitesse problème

protected boolean navigationMovement(int dx, int dy, int status, int time) { 
    if (dx >0) { 
     if (value < maxValue) { 
      value++; 
      invalidate(xPosSlider + value*sliderStep, getHeight()/2 - SLIDER_HEIGHT/2, sliderStep, SLIDER_HEIGHT);         
      return true; 
     } 
    } else if (dx < 0) { 
     if (value > 0) { 
      value--; 
      invalidate(); 
      return true; 
     } 
    } 

    return super.navigationMovement(dx, dy, status, time); 
} 

Répondre

1

Le premier endroit à regarder est votre propre code. Est-ce que vous faites quelque chose qui prend du temps sur le fil même qui empêche les opérations de peinture de se produire en temps opportun? C'est le problème probable. En revanche, vous pouvez essayer calling the paint method directly as shown here. Mais la meilleure solution est de s'assurer que votre thread d'événement n'est pas lié au travail qui devrait être fait sur un thread séparé.