くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Androidでカレンダーを表示するライブラリ(CompactCalendarView)

Androidでカレンダーアプリを作る際に利用したCompactCalendarViewの備忘録。
いろいろ調べたけど、シンプルで使いやすいライブラリ。

使い方

色やサイズなどは、XMLで設定する感じ

<com.github.sundeepk.compactcalendarview.CompactCalendarView
    android:id="@+id/calendar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    
    <!-- 全体の設定:背景色、文字の色、文字のサイズ -->
    app:compactCalendarBackgroundColor="@android:color/white" 
    app:compactCalendarTextColor="@android:color/brown"
    app:compactCalendarTextSize="16sp"
    
    <!-- 当日の設定:当日の背景色、Indicatorのスタイル、文字の色 -->
    app:compactCalendarCurrentDayBackgroundColor="@android:color/red"
    app:compactCalendarCurrentDayIndicatorStyle="fill_large_indicator"
    app:compactCalendarCurrentDayTextColor="@android:color/white"
    
    <!-- 選択日の設定:選択した日の背景色、Indicatorのスタイル、文字の色 -->
    app:compactCalendarCurrentSelectedDayBackgroundColor="@android:color/white"
    app:compactCalendarCurrentSelectedDayIndicatorStyle="fill_large_indicator"
    app:compactCalendarCurrentSelectedDayTextColor="@android:color/red"
    
    <!-- イベントの設定:イベントのIndicatorのスタイル、3つ以上のイベントがあるときに表示される文字の色 -->
    app:compactCalendarEventIndicatorStyle="small_indicator"
    app:compactCalendarMultiEventIndicatorColor="@android:color/orange"
/>

表示する月やロケールなどは、Java側で設定する感じ

Calendar curDate = Calendar.getInstance().getTime();

CompactCalendarView calendarView.setCurrentDate(curDate); // 現在の日時をセット
calendarView.setFirstDayOfWeek(Calendar.SUNDAY); // 日曜日始まりに設定
calendarView.setLocale(TimeZone.getDefault(), Locale.ENGLISH); // ロケールの設定
calendarView.shouldDrawIndicatorsBelowSelectedDays(true); // 選択した日にEventがある場合でもEventを表示

calendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
    @Override
    public void onDayClick(Date dateClicked) {
        // 日付がクリックされたときの処理
    }

    @Override
    public void onMonthScroll(Date firstDayOfNewMonth) {
        // 表示する月が変わったときの処理
    }
});

予定はEventクラスで、CompactCalendarViewに追加する

// 予定(Event)の作成: 
Calendar cal = Calendar.getInstance();
cal.set(2017, 1, 1, 0, 0, 0);
Event event = new Event(
        Color.BLUE,                  // 表示する予定の色
        cal.getTimeInMillis()    // 表示する日時
        );

// カレンダーに予定を追加
calendarView.addEvent(event); 

// カレンダーの予定を全削除
calendarView.removeAllEvents();

他のカレンダーライブラリ

調べた際に見て、他のライブラリ。といっても1つしかない。。

  1. androidcalendarview

いろいろ調べてみたが、自作するのが多い感じ。。

以上!!

参考になるサイト様