2016-07-06 26 views
0

我目前在android應用程序上工作,我面臨着一個優化問題:我有一個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只發射一次。

+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

感謝您付出的努力併爲我的糟糕解釋感到遺憾,首先:即使在用戶的手指在搜索欄上時,我也希望發生拇指跳躍,其次,我希望onProgressChanged只能在[45,55]範圍內運行一次。 – starter