안녕하세요 시아아빠입니다.
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형태 또는 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);
}
다음 포스팅에 좀 더 이해하기 쉽게 그리고 더 추가된 설명으로 찾아뵙겠습니다.
'Android > Develop' 카테고리의 다른 글
[Android] 페이스북 계정으로 로그인하기(2020.04.07) (0) | 2020.04.07 |
---|---|
[Android] Gradle 업데이트 (0) | 2020.04.03 |
[Android] HashKey 구하기 (0) | 2019.10.16 |
[Android] 카카오 계정으로 로그인하기(2019.10) (2) | 2019.10.16 |
[Android] Androidx로 migrate 간단히 하기 (0) | 2019.10.16 |
댓글