2012-02-04 4 views
0

그래서 SeekBar를 가스 페달처럼 작동 시키려고합니다.Android : UI를 매달 지 않고 TextView를 계산하고 업데이트하십시오.

중립 위치 (진행 = 50)에있을 때 내 값이 변경되지 않습니다. SeekBar 진행률이 50보다 크거나 작아지면 50에서 그 차이를 가져 와서 TextView로 푸시되는 값을 계산하는 데 사용합니다.

값에 대한 더하기 또는 빼기는 진행률이 변경 되었기 때문에 발생하는 것이 아니라 진행률이 변경된 시점에서 유지되는 기간을 기준으로합니다. 이것은 당신이 50 명에서 멀리 떨어져있을수록 값이 더 빨리 올라가거나 다른 방향에서 내려 간다는 것을 의미합니다.

첫 번째 생각은 잠자기 후 값을 업데이트 한 while 루프가있는 스레드입니다. SeekBar의 진행 상황을 전 세계적으로 저장했습니다. 이것은 내 값을 계산하기 위해 작동하지만 UI 스레드에서 실행되지 않기 때문에 UI에서 UI를 업데이트 할 수 없습니다.

어떻게하면이 "가스 페달"SeekBar 작업을 할 수 있습니까?

답변

1

사용해야이있을 UI 스레드의 모든 실행. postDelayed을 사용하여 Handler를 실행하여 "속도계"를 한 번 업데이트하십시오 (250ms 요청시 OK). Handler가 실제로 실제로 실행되는 경우가 많지만 요청한 간격이 아닌 실제 경과 시간을 사용하여 속도계 업데이트를 계산합니다. (업데이트 기능이 얼마나 자주 또는 얼마나 불규칙하든 관계없이 실제 환경이 계속 실행되기 때문에 물리 시뮬레이션에서이 작업을 수행해야합니다.)

관련 문제