2016-07-06 1 views
0

現在、アンドロイドアプリケーションで作業していますが、最適化の問題に直面しています。ユーザーが親指を中央付近にドラッグすると、seekbarが表示されます(max valueは100 55と45の間の平均)は、親指が自動的に中央に飛びます。セグメントごとにonProgressChanged()を発生させる方法

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    x=seek.getProgress(); 
    if (x>45 && x<55) { 
     seek.setProgress(50); 
    } 
    socket.emit("move1", x); 
} 

それは動作しますが、親指がジャンプするたびにonProgressChangedイベントは、ユーザーが離れてミドルエリアから親指を動かすので、これはあまりにも多くのリソースを消費するまで連続して発射し続けます。私が望むのは、seekbarの進行が45と55の間にある間に、onProgressChangedが1回だけ点火するということです。

+0

フラグを使用し、その後、そのユーザは、親指を動かすかどうかをチェックするために 'fromUser'ブール値を使用するように設定されていた場合位置を設定し、フラグを解除します。 – Bonatti

答えて

0

これは役立ちます - fromUserパラメータは、ユーザーからのアクションまたはプログラムによって進行状況が変更されたかどうかを示します。これは、ユーザによって変更され、それは50になっていない場合、その後50

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
     int x = seekBar.getProgress(); 
     if(fromUser && x != 50 && x > 45 && x < 55) { 
      seekBar.setProgress(50); 
     } 
     .... 
    } 
}); 
+0

あなたの努力のおかげで、私の悪い説明のために申し訳ありません。まず、ユーザーの指がシークバーにいる間でも親指ジャンプが起きてほしい、第2に、onProgressChangedを[45,55] 。 – starter

関連する問題