안드로이드에서 TimePicker를 사용해서 사용자에게 

시간을 선택하도록 할 수 있는데요.

오늘은 이 TimePicker에 대해서 정리해보겠습니다.



1. XML에서 TimePicker 생성


참고로, 우리가 TimePicker는 저희들이 보통 Dropdown메뉴 같다고 하는 Spinner와는 다른 UI형태를 가지고 있습니다.

가장 최근 버전의 TimePicke Ui는 아래이미지와 같은데요.




위와 같은 TimePicker를 XML에서 부르는 방법은, 다음과 같습니다.




음, 그런데 옛날처럼 스크롤 하면서 내리거나 올리는 방식이 더 좋아보인다구요?

네, 그럼 xml에서 옵션을 하나만 더 넣으시면 되는 데요.

timePickerMode="spinner"  요것만 더 넣어주시면 됩니다.




그럼 아래와 같이 위아래로 스크롤하면서 바꿀 수 있는 형태로 바뀝니다.




2. Java파일에서 시간과 분 받아오기


이제 Java파일에서 불러와서 사용자가 선택한 시간과 분을 받아오겠습니다.

TimePicker를 변수에 받아와서, getHour(), getMinute()으로 시간과 분을 얻어올 수 있습니다.

그런데, 주의할 것이 API23 이후부터는 getHour를 쓰구요, 그 이전버전은 deprecated된 getCurrentHour()라는 메소드를 사용해야 합니다.




이렇게 해서 일반적으로 xml로 UI에 올리고, 시간과 분을 가져오는 것에 대해서 알아보았는데요.

아래에서는 안드로이드에서 권장하는 방법인 Dialog형태로 생성하는 방법에 대해서 정리해보겠습니다.



3. TimePickerDialog 생성해보기


먼저 TImePickerDialog를 만들구요, DialogFragment를 상속받습니다.

그리고, OnTimeSetListener 인터페이스를 구현하면 되는데요.




이어서, onCreateDialog() 라는 메소드를 오버라이드 해주고, Calendar클래스에서 현재시간을 가져와서, 

새로운 TimePickerDialog 객체를 생성해서 리턴해줍니다.




이제, MainActivity로 돌아와서 버튼을 하나만들고 버튼을 클릭할 수 있도록 해줍니다.

그 다음으로, 위에서 생성한 TimePickerFragment를 생성하고 show()메소드를 이용해서서 보여질수 있도록 하면 되는데요.




아래와 같은 TimePickerDialog를 xml없이 생성할 수 있게 되었습니다.




728x90
  1. 키위남 2017.04.17 15:42 신고

    감사합니다 필요한 정보였는데 잘 읽었습니다!

  2. 김기 2019.03.09 00:23 신고

    timePickerDialog에서는 spinner로 설정하려면 어떻게하나용?

  3. 콜리 2021.05.31 18:00 신고

    왜 xml 파일로 구현하는 것보다 dialog 형태로 생성하는 것을 더 선호하나요?

    같은 함수인데 어떤 차이가 있는지 궁금합니다.

+ Recent posts