본문 바로가기
Android/Develop

[Android] TimePicker 사용 및 키보드 입력시 유의사항

by hyun's life_developer 2020. 3. 16.

안녕하세요 시아아빠입니다.

 

TimePicker를 사용한 예제를 통해 시간과 분을 선택하는 법을 알아보겠습니다.

 

> timepicker.xml

<TimePicker
   android:id="@+id/time_picker"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:inputType="numberDecimal"
   android:timePickerMode="spinner"/>

android:timePickerMode="spinner"
android:timePickerMode="clock"

위와 같이 android:timePickerMode를 사용하여 spinner형태 또는 clock형태로 바꿀 수 있습니다.

 

java단을 살펴보겠습닌다.

 

> TimePicker.java

mTimePicker = (TimePicker) findViewById(R.id.time_picker);
if(Build.VERSION.SDK_INT >= Build.VERSION.CODES.M)
{
	mTimePicker.clearFocus();
	hour = mTimePicker.getHour() + "";
    	minute = mTimePicker.getMinute() + "";
}
else
{
	mTimePicker.clearFocus();
	hour = mTimePicker.getCurrentHour + "";
   	minute = mTimePicker.getCurrentMinute() + "";
}

여기서 유의해야할 점은 SDK API23 기준! 시간과 분의 value를 가져오는 메소드가 다릅니다.

호환성을 위해서 23이상일 경우 getHour()과 getMinute()를 미만일 경우 getCurrentHour(), getCurrentMinute()

시간, 분 값을 가져오도록 하겠습니다. 또한 if절의 첫번째 부분을 보면 mTimePicker.clearFocus()를 선언해주었는데요.

이는 TimePicker의 spinner형태에서 +, -버튼 외에 사용자가 숫자부분을 눌러 키패드로 직접 입력시에 입력한 값을 적용시켜주도록 하기 위함입니다. 그래야지만 정확한 값을 받아올 수 있습니다.

 

 왜 value Update를 clearFocus로 하냐?!

이유는 TimePicker는 포커스를 잃으면서 OnFocusChanged()가 호출되어야 값이 반영되기 때문입니다.

따라서 clearFocus로 포커스를 초기화 시켜주면서 키패드로 입력한 정확한 값을 가져오도록 합니다.

 

 

public class TimePickerActivity extends Activity implements Veiw.OnClickListener, TimePicker.OnTimeChangedListener
{
    private TimePicker mTimePicker;
    private String hour, minute;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    	mTimePicker = (TimePicker)findViewById(R.id.time_picker);
        mTimePicker.setIs24HourView(true);
    }

 

다음 포스팅에 좀 더 이해하기 쉽게 그리고 더 추가된 설명으로 찾아뵙겠습니다.

 


댓글