2011-10-27 4 views
1

Par exemple, si je déplace la barre de recherche sur 100, je souhaite que imageView tourne à 100 degrés en une seconde. Le problème est que si je le déplace tout de suite à 50, il passe à 100 et passe lentement à 50. Y at-il un moyen de le faire pivoter à partir de la position actuelle ... ou une solution plus élégante pour des degrés aléatoires?Rotation lisse

seekBar1 = (SeekBar) findViewById(R.id.seekBar1); 
arrow2 = (ImageView) findViewById(R.id.imageView1);  

seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
{ 
    public void onProgressChanged(SeekBar seekBar1, int progress, boolean fromUser) 
    { 
     currentSpeed.setText(""+progress); 

     RotateAnimation rotateAnimation = new RotateAnimation(fromPosition ,progress, 
       Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 
       0.5f); 
       rotateAnimation.setInterpolator(new LinearInterpolator()); 
       rotateAnimation.setDuration(1000); 
       rotateAnimation.setFillAfter(true); 
       arrow2.startAnimation(rotateAnimation); 
     fromPosition=progress;     
    } 
     public void onStartTrackingTouch(SeekBar seekSize1) {} 
     public void onStopTrackingTouch(SeekBar seekSize1) {} 
}); 

Répondre

0

Je sais que cette question a été postée il y a assez longtemps - mais j'avais eu des problèmes avec le même problème et j'ai trouvé une solution. Vous devez utiliser ce qu'on appelle un filtre passe-bas. Cela filtre une partie du bruit et les valeurs "aberrantes" qui reviennent du capteur. Jetez un oeil à this.