이번 시간에는 Material 라이브러리를 등록해서
DatePicker 달력(캘린더) 만드는 방법을
알아보겠습니다.
1. 실행화면
2. 라이브러리 등록
3. 테마 수정
4. 메인 화면 구성 activity_main.xml
5. 메인 코드 구현 MainActivity.java
build.gradle(Module:프로젝트명:app)
dependencies 괄호 안에 아래 코드를 넣어주시면 됩니다.
implementation 'com.google.android.material:material:1.4.0'
2. 테마 수정 themes.xml
( res -> value -> themes)
style 태그 속성 parent를 아래 코드로 변경해주시면 됩니다.
<style name="Theme.MaterialExam" parent="Theme.MaterialComponents.Light.DarkActionBar">
<?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>
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 갤러리 느낌으로 만드는 방법
2022.01.08 - [안드로이드] - [안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경하면 표시(Indicator) 해주는 방법
2022.01.09 - [안드로이드] - [안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경 표시(Indicator) 직접 만드는 방법
[안드로이드] 이미지(Image) 두 손가락으로 확대(ZoonIn)하는 방법 (0) | 2022.01.13 |
---|---|
[안드로이드] RecyclerView 아이템 클릭 상세화면 보여주는 방법 (1) | 2022.01.12 |
[안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경 버튼 만드는 방법 (0) | 2022.01.10 |
[안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경 표시(Indicator) 직접 만드는 방법 (0) | 2022.01.09 |
[안드로이드] 밀어서 화면 변경 ViewPager2 화면 변경하면 표시(Indicator) 해주는 방법 (0) | 2022.01.08 |
댓글 영역