アプリ開発初心者の暇つぶしAndroid体験記

アプリ開発初心者がAndroidアプリ開発始めました。日々学んだことをアウトプットしていきます。

【Android】CalendarViewを使ってカレンダーを表示してみる

本日はCalendarViewを使ったカレンダーの表示方法について書いていきます。

レイアウトの実装

layoutにはCalendarViewタグを使用します。

<CalendarView
    android:id="@+id/calendar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center" />

Activityの実装

カレンダーを表示するだけであれば、Activity側に処理を書く必要はありません。
ここでは、CalendarViewのメソッドについていくつか紹介しておきましょう。詳細は公式ドキュメントをご覧ください。

setDateとgetDate

setDateでCalendarViewに日付を設定することができます。引数の型はlong型です。
getDateで選択されている日付を取得できます。戻り値の型はlong型です。

CalendarView cal = findViewById(R.id.calendar);

// 現在日付を設定
cal.setDate(new Date().getTime());

// 現在日付を取得
Date today = new Date(cal.getDate());

setFirstDayOfWeekとgetFirstDayOfWeek

setFirstDayOfWeekで開始曜日を変更することができます。日曜始まりか、月曜始まりかは、けっこう拘る人が多いのではないでしょうか。
引数の型はintですが、Calendarクラスの定数を使用して指定しましょう。
getFirstDayOfWeekでは現在設定されている開始曜日を取得できます。

CalendarView cal = findViewById(R.id.calendar);

// 開始曜日を設定する
cal.setFirstDayOfWeek(Calendar.MONDAY);

// 開始曜日を取得する
int firstDayOfWeek = cal.getFirstDayOfWeek;

setOnDateChangeListener

選択された日付が変わった時に処理を行うときに実装します。
OnDateChangeListenerクラスのonSelectedDayChangeメソッドに処理を実装していきます。

CalendarView cal = findViewById(R.id.calendar);
calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {

        String day = Integer.toString(year)  + "/" + String.format("%02d",month  + 1) + "/" + String.format("%02d", dayOfMonth);
        selectDay.setText(day);
    }
});

実際のアプリの動きで確認してみます。
カレンダー日付の選択が変わると、画面下部の日付が変わることを確認してみてください。

初期画面
f:id:mtnanao:20200922170807p:plain:w300



日付選択後
f:id:mtnanao:20200922170826p:plain:w300


CalendarViewの紹介は以上です。
簡単にカレンダーを実装することができますね。

最後まで読んでいただきありがとうございます。お疲れさまでした(^_^)/


最後にアプリの宣伝です!CalendarViewも使ってます!
f:id:mtnanao:20200921163938j:plain
play.google.com