마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

타임피커 분 설정할때 시간 고정

0 추천

분간격 밑에처럼 설정시 스크롤하면 hour가 확 바뀌는데 분설정할때 hour는 고정시키고 hour설정할때만 바뀌도록 하고싶은데 어떻게 해야할까요!

private static final int TIME_PICKER_INTERVAL = 5;
private boolean mIgnoreEvent = false;
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        if (mIgnoreEvent)
            return;
        if (minute%TIME_PICKER_INTERVAL!=0){
            int minuteFloor=minute-(minute%TIME_PICKER_INTERVAL);
            minute=minuteFloor + (minute==minuteFloor+1 ? TIME_PICKER_INTERVAL : 0);
            if (minute==60)
                minute=0;
            mIgnoreEvent=true;
            timePicker.setCurrentMinute(minute);
            mIgnoreEvent=false;
        }
    }
});

 

 

enerigpy (2,110 포인트) 님이 2023년 4월 20일 질문

1개의 답변

0 추천

이전에 선택한 시간과 비교해서 변경이 되었을 때만 처리를 해보시면 어떨까요?
 

// 필요시에  calendar의 최초값으로 초기화
private int previousHour  = 0;

timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
         boolean hourChanged = previousHour != hourOfDay
         if (!hourChanged) return;

        previousHour = hourOfDay;

       ...
    }
});

 

spark (224,800 포인트) 님이 2023년 4월 20일 답변
spark님이 2023년 4월 20일 수정
if (!hourChanged) return; 이거 전에

밑에거 선언하면 될가요?

if (mIgnoreEvent)
            return;
        if (minute%TIME_PICKER_INTERVAL!=0){
            int minuteFloor=minute-(minute%TIME_PICKER_INTERVAL);
            minute=minuteFloor + (minute==minuteFloor+1 ? TIME_PICKER_INTERVAL : 0);
            if (minute==60)
                minute=0;
            mIgnoreEvent=true;
            timePicker.setCurrentMinute(minute);
            mIgnoreEvent=false;
        }
...