2016-07-06 2 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은 한 번만 발사됩니다.

+0

로 설정 한 경우 , 위치를 설정 한 다음 플래그를 설정 해제하십시오. – Bonatti

답변

0

이 정보는 도움이 될 수 있습니다. - fromUser 매개 변수는 사용자의 동작 또는 프로그래밍 방식으로 인해 진행률이 변경되었는지 여부를 알려줍니다. 그것은 사용자에 의해 변경하고, 50 이미하지 않은 경우, 다음 플래그를 사용하여, 그 사용자가 다음, 엄지 손가락을 이동하는지 확인하기 위해`fromUser` 부울를 사용하여 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

노력과 미안해, 내 나쁜 설명을 주셔서 감사합니다, 우선 : 나는 사용자의 손가락이 seekbar에있는 동안에도 엄지 손가락 점프를 원한다. 둘째로 나는 onProgressChanged를 [45,55] 범위에서 한 번만 실행하기를 원한다. . – starter

관련 문제