Android
안드로이드 스튜디오 - 날짜/시간 예약 앱 만들기
ykm1256
2020. 7. 6. 16:59
- 예약시작을 누르면 크로노미터가 시작되고, 라디오버튼이 나온다.
- 라디오 버튼을 클릭하면 각각 calendarview, timepicker가 출력된다.
- 날짜와 시간을 설정한 후 예약 완료를 누르면 설정한 날짜와 시간이 아래의 텍스트뷰에 출력되고 초기화면으로 돌아간다.
자바코드
초기화면 설정
java.util.Calendar curDate = java.util.Calendar.getInstance();
curDate.setTimeInMillis(calView.getDate());
syear = curDate.get(Calendar.YEAR);
smonth = curDate.get(Calendar.MONTH) + 1;
sday = curDate.get(Calendar.DATE);
rdoCal.setVisibility(View.INVISIBLE);
rdoTime.setVisibility(View.INVISIBLE);
timePick.setVisibility(View.INVISIBLE);
calView.setVisibility(View.INVISIBLE);
- 현재 날짜값을 미리 받아와서 변수에 저장해둔다.
- 라디오버튼, CalendarView,TimePicker를 안보이게 설정한다.
라디오버튼 설정
rdoCal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
timePick.setVisibility(View.INVISIBLE);
calView.setVisibility(View.VISIBLE);
}
});
rdoTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
calView.setVisibility(View.INVISIBLE);
timePick.setVisibility(View.VISIBLE);
}
});
- 라디오 버튼을 누르면 해당 항목이 출력된다.
버튼 설정
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.setBase(SystemClock.elapsedRealtime());
chrono.start();
chrono.setTextColor(Color.RED);
rdoCal.setVisibility(View.VISIBLE);
rdoTime.setVisibility(View.VISIBLE);
}
});
btnEnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.stop();
chrono.setTextColor(Color.BLUE);
tvYear.setText(Integer.toString(syear));
tvMon.setText(Integer.toString(smonth));
tvDay.setText(Integer.toString(sday));
tvHour.setText(Integer.toString(timePick.getCurrentHour()));
tvMin.setText(Integer.toString(timePick.getCurrentMinute()));
rdoCal.setVisibility(View.INVISIBLE);
rdoTime.setVisibility(View.INVISIBLE);
timePick.setVisibility(View.INVISIBLE);
calView.setVisibility(View.INVISIBLE);
}
});
- btnStart 버튼을 누르면 chronometer가 시작되고 글자색을 빨간색으로 설정하며, 라디오버튼이 보이게 된다.
- btnEnd 버튼을 누르면 chronometer가 중지되고 글자색을 파란색으로 설정, 아래의 텍스트뷰에 설정한 날짜와 시간이 출력된다.
- 라디오버튼, 타임피커, 캘린더뷰를 INVISIBLE로 설정하여 초기화면으로 돌아간다.
날짜값 받아오기
calView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int year, int month, int day) {
syear = year;
smonth = month+1;
sday = day;
}
});
- 버전상의 문제로 날짜값을 설정하여도 설정한 값을 못받아와서 변수를 선언하여 설정한 날짜가 바뀔 때 마다 해당 날짜값을 넣어준다.
- DateChangeListener를 이용하여 날짜가 바뀔 때의 이벤트를 처리한다.