くらげになりたい。

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

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

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

以上!!

参考になる書籍

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

基礎&応用力をしっかり育成!  Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン (CodeZine BOOKS)

黒帯エンジニアが教えるプロの技術 Android開発の教科書(ヤフー黒帯シリーズ)

黒帯エンジニアが教えるプロの技術 Android開発の教科書(ヤフー黒帯シリーズ)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

Androidアプリ開発逆引きレシピ (PROGRAMMER’S RECiPE)

【宣伝】複数言語へ一括翻訳できる文章・単語の管理アプリ『トランスノート』をリリースしました!

f:id:wannabe-jellyfish:20181123102921p:plain:w400

トランスノート|https://trans-notes.net/:plain

アプリやサービスの多言語対応をサポートしてくれるWebサービスです。

メッセージごとにIDをつけれるので、メッセージ一覧の作成・管理に利用できて、
AndoridのXML形式とか、ファイルをそのまま配置できるとこまでやってくれます。

詳しい内容はこちらの記事で。 wannabe-jellyfish.hatenablog.com

参考になるサイト様