자바 웹 개발자가 될거야/JAVA
[Android] 안드로이드 날짜, 시간 예약 설정
whitz
2021. 12. 22. 11:30
- 예약시작 버튼을 누르고 날짜 설정을 클릭하면 달력이 나오도록, 시간 설정을 클릭하면 시계가 나오도록 구현
- 예약완료 버튼을 누르면 예약 설정한 날짜와 시간을 한꺼번에 보여주고 예약에 걸린 시간을 측정해주도록 구현
① .xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/cm1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format="예약에 걸린 시간 : %s"
android:textSize="20dp"
android:layout_gravity="center"/>
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="예약 시작" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="날짜 설정"/>
<RadioButton
android:id="@+id/rb2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시간 설정"/>
</RadioGroup>
<FrameLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TimePicker
android:id="@+id/tp1"
android:visibility="invisible"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"/>
<CalendarView
android:id="@+id/cv1"
android:visibility="visible"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="예약완료"/>
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0000년00월00일 00시 00분 00초"
/>
</LinearLayout>
</LinearLayout>
② .java
- .xml에서 각 객체에 설정한 id들을 findViewById로 들고와줌
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cm1.start();
}
});
- 예약시작 버튼을 누르면 Chronometer 작동되도록 설정
rb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cv1.setVisibility(View.VISIBLE);
tp1.setVisibility(View.INVISIBLE);
}
});
rb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cv1.setVisibility(View.INVISIBLE);
tp1.setVisibility(View.VISIBLE);
}
});
- 날짜 설정 라디오버튼을 누르면 캘린더뷰가 등장하고 타임피커는 안보이게 설정
- 시간 설정 라디오버튼을 누르면 타임피커가 등장하고 캘린더뷰는 안보이게 설정
cv1.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int dayOfMonth) {
selectYear = year;
selectMonth = month+1;
selectDay = dayOfMonth;
Log.i("mytag",selectYear+" "+selectMonth+" "+selectDay);
}
});
tp1.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int hour, int min) {
selectHour = hour;
selectMin = min;
Log.i("mytag",selectHour+" "+selectMin);
}
});
- 날짜와 시간이 변하면 그 값을 매개변수로 가져옴
- select XXX 변수는 MainActivity 클래스에 선언해줌
- Logcat 함수를 통해서 사용자가 선택한 날짜나 시간값 기억함
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cm1.stop();
tv1.setText(selectYear+"년 "+selectMonth+"월 "+selectDay+"일 "+selectHour+"시 "+selectMin+"분");
}
});
- 예약완료 버튼을 누르면 TextView에 예약 설정한 날짜와 시간을 보여줌