私はAndroid開発にかなり慣れておらず、Androidアプリケーションにカレンダーを含める方法を探していますが、かなりひどいです。グーグルするとき。
アプリケーションでデフォルトのカレンダーの種類のビューを使用する方法はありますか? (UIはおなじみなので、理想的です)
組み込みのオプションで失敗しましたが、使用できるカレンダーコントロールを備えた優れたライブラリはありますか?
私は同期するつもりはなく、そのすべて(少なくとも現時点では)は、ユーザーに情報を表示できるカレンダービューを探しているだけです。
Caldroidライブラリ( https://github.com/roomorama/Caldroid )を作成しました。これはセットアップが簡単で、最小/最大日付のセットアップ、無効な日付、日付範囲の選択、スワイプなどの多くの機能を備えています。月の変更、完全なローカライズ、ローテーションの適切なサポートなど。ルックアンドフィールを簡単にカスタマイズできます。誰かがそれが役に立つと思うかもしれないかどうか共有するだけです:)
私は Android-CalendarView 、Caldroidを試し、後でAndroid-times-squareに切り替えました。この改善:
月が明確に分離されているため、Androidバージョンよりもきれいに見えます
Caldroidと同じように、それは 生産的なアプリ の一部です。
AFAIK、独自のカレンダーを実装する以外に方法はありません。つまり... 7列のGridLayout
を使用し、カスタムBaseAdapter
を作成してデータを正しく表示する必要があります。
Androidは、アプリにカレンダーを組み込む3つの方法を提供するようになりました。
カレンダービュー 日付などを選択します。
カレンダープロバイダー アクセスして、OSカレンダーにイベントを追加および削除できます。
カレンダーインテント 追加の権限を取得したり、データベースを処理したりすることなく、カレンダーを提供できます。
それは可能ですが、簡単ではありません。 http://jimblackler.net/blog/?p=151&cpage=2#comment-52767
そして
private void InsertAppointment(String strTitle, String strDescription, String strEventLocation, long StartDateTime, long EndDateTime, boolean bAllDay, boolean bHasAlarm){
int tAllday;
int tHasAlarm;
if (bAllDay = true){
tAllday = 1;
}
else
tAllday = 0;
if (bHasAlarm = true){
tHasAlarm = 1;
}
else
tHasAlarm = 0;
ContentValues event = new ContentValues();
// Calendar in which you want to add Evenet
event.put("calendar_id", CalId); //CalId
event.put("title", strTitle);
event.put("description", strDescription);
event.put("eventLocation", strEventLocation);
event.put("dtstart", StartDateTime);
event.put("dtend", EndDateTime );
event.put("allDay", 0);
event.put("hasAlarm", 0);
Uri eventsUri = Uri.parse("content://com.Android.calendar/events");
// event is added
getContentResolver().insert(eventsUri, event);
}
content://com.Android.calendar/calendars
をすばやく検索すると、開始するのに役立ちます。しかし、私はまだ私の仕事を終えていません。私はまだデータを取り出すことができません。しかしそれは可能です
このライブラリは本当に素晴らしく、よりモダンなUI(マテリアルデザイン)を備えているようです:
https://github.com/prolificinteractive/material-calendarview
あなたはそれをgradleでインポートする必要があります:
compile 'com.prolificinteractive:material-calendarview:1.4.0'
そしてそれをあなたのレイアウトに追加します:
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/calendarView"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:mcv_showOtherDates="all"
app:mcv_selectionColor="#00F"
/>
私が作成したAndroidカレンダーピッカーを使用できます。これはオープンソースプロジェクトであり、プロジェクトに簡単に追加できます。
MFCalendarViewを使用できます: https://github.com/MustafaFerhan/MFCalendarView
複数のイベントを設定します。
ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());
mf.setEvents(eventDays);
mFCalendarViewのリスナーで処理します。
mf = (MFCalendarView) findViewById(R.id.mFCalendarView);
mf.setOnCalendarViewListener(new onMFCalendarViewListener() {
@Override
public void onDisplayedMonthChanged(int month, int year, String monthStr) {
}
@Override
public void onDateChanged(String date) {
}
});
とても簡単です。