상세 컨텐츠

본문 제목

[안드로이드] Material DatePicker 달력(캘린더) 만드는 방법

안드로이드

by aries574 2022. 1. 11. 17:12

본문


이번 시간에는 Material 라이브러리를 등록해서

DatePicker 달력(캘린더) 만드는 방법을

알아보겠습니다. 


목차

1. 실행화면

2. 라이브러리 등록

3. 테마 수정

4. 메인 화면 구성 activity_main.xml

5. 메인 코드 구현 MainActivity.java


1. 실행화면

 

 

2. 라이브러리 등록

build.gradle(Module:프로젝트명:app)

dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.

implementation 'com.google.android.material:material:1.4.0'

 

3. 테마 수정

2. 테마 수정 themes.xml
( res -> value -> themes)

style 태그 속성 parent를 아래 코드로 변경해주시면 됩니다.

<style name="Theme.MaterialExam" parent="Theme.MaterialComponents.Light.DarkActionBar">

 

 

4. 메인 화면 구성 activity_main.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:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/date_picker_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="100dp"
        android:text="날짜"
        android:textColor="@color/black"
        android:textSize="30sp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp">

        <Button
            android:id="@+id/date_picker_btn"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="80dp"
            android:text="날짜 선택" />

        <Button
            android:id="@+id/date_range_picker_btn"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="80dp"
            android:text="기간 선택" />
    </RelativeLayout>
</LinearLayout>

 

5. 메인 코드 구현 MainActivity.java

public class MainActivity extends AppCompatActivity {

    TextView datePickerText;

    Calendar calendar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        datePickerText = findViewById(R.id.date_picker_text);

        calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

        //오늘 날짜
        Long today = MaterialDatePicker.todayInUtcMilliseconds();

        //날짜 선택 버튼
        Button datePicker = findViewById(R.id.date_picker_btn);
        datePicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MaterialDatePicker materialDatePicker = MaterialDatePicker.Builder.datePicker()
                        .setTitleText("Date Picker")
                        .setSelection(today).build(); //오늘 날짜 셋팅

                materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");

                //확인버튼
                materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
                    @Override
                    public void onPositiveButtonClick(Long selection) {

                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
                        Date date = new Date();
                        date.setTime(selection);

                        String dateString = simpleDateFormat.format(date);

                        datePickerText.setText(dateString);
                    }
                });
            }
        });

        //기간 선택 버튼
        Button dateRangePicker = findViewById(R.id.date_range_picker_btn);
        dateRangePicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();

                builder.setTitleText("Date Picker");

                //미리 날짜 선택
                builder.setSelection(Pair.create(MaterialDatePicker.thisMonthInUtcMilliseconds(), MaterialDatePicker.todayInUtcMilliseconds()));

                MaterialDatePicker materialDatePicker = builder.build();

                materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");

                //확인버튼
                materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Pair<Long, Long>>() {
                    @Override
                    public void onPositiveButtonClick(Pair<Long, Long> selection) {
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
                        Date date1 = new Date();
                        Date date2 = new Date();

                        date1.setTime(selection.first);
                        date2.setTime(selection.second);

                        String dateString1 = simpleDateFormat.format(date1);
                        String dateString2 = simpleDateFormat.format(date2);

                        datePickerText.setText(dateString1 + " \n " + dateString2);
                    }
                });
            }
        });
    }
}

 

2022.01.07 - [안드로이드] - [안드로이드] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법

 

[안드로이드] 밀어서 화면 변경 ViewPager2 갤러리 느낌으로 만드는 방법

이번 시간에는 ViewPager2를 이용해서 좌우, 위아래로 갤러리 느낌을 만들어 보겠습니다. 목록 1. 실행화면 2. ViewPager2 라이브러리 등록 3. 갤러리 화면 만들기 item_layout.xml 4. 화면과 데이터 연결 Adapt

aries574.tistory.com

2022.01.08 - [안드로이드] - [안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경하면 표시(Indicator) 해주는 방법

 

[안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경하면 표시(Indicator) 해주는 방법

이번 시간에는 View2를 이용해서 프래그먼트(Fragemnt) 화면 변경과 변경하면 하단에 현재 화면 위치를 표시해주는 Indicator을 적용하는 방법을 알아보겠습니다. 목차 1. 실행화면 2. 위치표시 라이브

aries574.tistory.com

2022.01.09 - [안드로이드] - [안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경 표시(Indicator) 직접 만드는 방법

 

[안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경 표시(Indicator) 직접 만드는 방법

이번 시간에는 이전에 했던 ViewPager2 화면 변경 표시를 직접 만드는 방법에 대하여 알아보겠습니다. 이전 코드를 먼저 보시고 따라하시면 됩니다. 2022.01.08 - [안드로이드] - [안드로이드] ViewPager2

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역