출처: https://3months.tistory.com/307 [Deep Play]

안드로이드/연습

[Android] 시간예약

코딩하는 랄뚜기 2021. 8. 18. 13:52
<?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">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <Chronometer
            android:id="@+id/chronometer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:format="시간 측정 : %s"
            android:gravity="center"
            android:textSize="20dp">
        </Chronometer>
        <Button
            android:id="@+id/btnStart"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="#30000000"
            android:text="예약시작">

        </Button>
    </LinearLayout>
    <RadioGroup
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/rdoCal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="날짜 설정 (캘린더뷰)">
        </RadioButton>
        <RadioButton
            android:id="@+id/rdoTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="시간설정">
        </RadioButton>
    </RadioGroup>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <CalendarView
                android:id="@+id/calendarView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:showWeekNumber="false">
            </CalendarView>
            <TimePicker
                android:id="@+id/timePicker1"
                android:timePickerMode="spinner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            </TimePicker>
        </FrameLayout>
    </LinearLayout>
    <LinearLayout
        android:background="#CCCCCC"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/btnEnd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="#10000000"
            android:textColor="@color/black"
            android:text="예약완료">
        </Button>
        <TextView
            android:layout_marginLeft="15dp"
            android:id="@+id/tvYear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0000">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="년">
        </TextView>
        <TextView
            android:id="@+id/tvMonth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="월">
        </TextView>
        <TextView
            android:id="@+id/tvDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="일">
        </TextView>
        <TextView
            android:id="@+id/tvHour"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="시">
        </TextView>
        <TextView
            android:id="@+id/tvMinute"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="00">
        </TextView>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="분">
        </TextView>
        <TextView
            android:layout_marginLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="예약됨">
        </TextView>
    </LinearLayout>
</LinearLayout>
package com.example.practice;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.CalendarView;
import android.widget.Chronometer;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends AppCompatActivity {
    Chronometer chrono;
    Button btnStart, btnEnd;
    RadioButton rdoCal, rdoTime;
    CalendarView calView;
    TimePicker tPicker;
    TextView tvYear, tvMonth, tvDate, tvHour, tvMinute;
    int selectYear, selectMonth, selectDay;
    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("예약완료");
        btnStart = (Button) findViewById(R.id.btnStart);
        btnEnd =(Button) findViewById((R.id.btnEnd));

        chrono = (Chronometer) findViewById((R.id.chronometer));

        rdoCal=(RadioButton) findViewById(R.id.rdoCal);
        rdoTime=(RadioButton) findViewById(R.id.rdoTime);

        tPicker = (TimePicker) findViewById(R.id.timePicker1);
        calView = (CalendarView) findViewById(R.id.calendarView1);

        tvYear=(TextView) findViewById(R.id.tvYear);
        tvMonth=(TextView) findViewById(R.id.tvMonth);
        tvDate=(TextView) findViewById(R.id.tvDate);
        tvHour=(TextView) findViewById(R.id.tvHour);
        tvMinute=(TextView) findViewById(R.id.tvMinute);

        tPicker.setVisibility(View.INVISIBLE);
        calView.setVisibility(View.INVISIBLE);
        rdoCal.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v){
                tPicker.setVisibility(View.INVISIBLE);
                calView.setVisibility(View.VISIBLE);
            }
        });
        rdoTime.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                tPicker.setVisibility(View.VISIBLE);
                calView.setVisibility(View.INVISIBLE);
            }
        });
        btnStart.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                chrono.setBase(SystemClock.elapsedRealtime());
                chrono.start();
                chrono.setTextColor(Color.RED);
            }
        });
        btnEnd.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                chrono.stop();
                chrono.setTextColor(Color.BLUE);
                tvYear.setText(Integer.toString(selectYear));
                tvMonth.setText(Integer.toString(selectMonth));
                tvDate.setText(Integer.toString(selectDay));

                tvHour.setText(Integer.toString(tPicker.getCurrentHour()));
                tvMinute.setText(Integer.toString(tPicker.getCurrentMinute()));
            }
        });
        calView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
                selectYear=year;
                selectMonth=month+1;
                selectDay=dayOfMonth;
            }
        });

    }
}

배운점

onSelectedDayChange에서 월은 0부터 시작이므로 1을 더해주어야 한다.

Chronometer의 setBase에 SystemClock.elapsedRealtime()을 넣어주면 시간을 불러 올 수 있다.

 

실행화면

 

 

'안드로이드 > 연습' 카테고리의 다른 글

[Android] 슬라이딩드로어  (0) 2021.08.18
[Android] 자동완성텍스트뷰어  (0) 2021.08.18
[Android] 테이블레이아웃 계산기  (0) 2021.08.18
[Android] xml RelativeLayout 2  (0) 2021.08.11
[Android] RelativeLayout 속성  (0) 2021.08.11