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를 이용하여 날짜가 바뀔 때의 이벤트를 처리한다.