2010-09-13 12 views
12

Ich bin ziemlich neu in der Android-Entwicklung und ich bin auf der Suche nach einer Möglichkeit, Kalender in meine Android-Anwendung zu integrieren, aber ich treffe ziemlich schlecht beim googeln.Android Kalenderansicht

  1. Gibt es eine Möglichkeit, eine standardmäßige Kalenderansicht in meiner Anwendung zu verwenden? (wäre ideal, da die Benutzeroberfläche vertraut wäre)

  2. Bestanden bei einer integrierten Option, gibt es keine guten Bibliotheken mit einem Kalender-Steuerelement, das ich verwenden könnte?

Ich bin nicht auf der Suche zu synchronisieren und alle, dass (zumindest an dieser Stelle), einfach nur eine Kalenderansicht haben, die ich Informationen für den Benutzer angezeigt werden kann.

Antwort

7

AFAIK, gibt es keinen anderen Weg als implementieren Sie Ihren eigenen Kalender. Also ... was Sie tun müssten, ist ein GridLayout mit 7 Spalten und erstellen Sie eine benutzerdefinierte BaseAdapter, um Daten korrekt anzuzeigen.

2

ist es möglich, aber nicht einfach. http://jimblackler.net/blog/?p=151&cpage=2#comment-52767

und

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); 

} 

eine schnelle Suche auf Inhalt: //com.android.calendar/calendars helfen Ihnen den Start. aber ich bin noch nicht fertig, aber ich kann die Daten noch nicht rausbekommen. aber es ist möglich

+0

Haben Sie den Standardkalender erfolgreich zu Ihrer App hinzugefügt? Lass es mich wissen, bitte. Ich brauche Hilfe dabei. Danke –

5

Android bietet jetzt drei Möglichkeiten, Kalender in Ihrer App zu integrieren.

  1. Calendar view für Kommissionierungstermine und solche.

  2. Calendar provider kann zugegriffen werden, um Ereignisse aus dem Betriebssystemkalender hinzuzufügen und zu entfernen.

  3. Calendar intents können Sie einen Kalender bereitstellen, ohne dass Sie zusätzliche Berechtigungen erhalten oder mit Datenbanken umgehen müssen.

+0

Leider funktioniert das nur auf API11 oder später. Es wäre schön, wenn jemand einen guten Backport erstellen würde, damit Sie die Version 2.x unterstützen können. – THelper

31

Ich schrieb Caldroid Bibliothek (https://github.com/roomorama/Caldroid), die Einrichtung ist einfach und haben viele Features wie Setup min/max Datum, untauglich Daten, wählen Sie Datumsbereich, Swipe zu Monat zu ändern, vollständig lokalisiert, Unterstützung Rotation richtig usw. Es ist einfach, das Erscheinungsbild anzupassen. Nur um zu teilen, wenn jemand es nützlich finden könnte :)

+0

hey, ich habe Ihren Kalender benutzt, und es ist großartig. aber ich muss Ereignisse am Datum festlegen. wie ich Datum Farben nach Ereignis anpassen müssen sie zu diesem Zeitpunkt haben. Kannst du mir eine kleine Idee geben, wie kann ich das erreichen? –

+0

Sie können Ihre eigene Ansicht für jede Zelle basierend auf dem Datum angeben, Sie finden es in der Dokumentation https://github.com/roomorama/Caldroid#allow-customized-cell-for-the-dates-gridview Sie kann finden, wie man es in der Probe auch verwendet – thomasdao

+0

Ich steckte in diesem Problem fest, können Sie bitte überprüfen? https://github.com/roomorama/Caldroid/issues/24 –

9

ich android-CalendarView versucht, Caldroid und wechselte später zu android-times-square, die diese Verbesserungen hat:

  • Viele schnelle Umstellung auf andere Monate aufgrund vertikaler Scrollen (ohne Paginierung, die in Caldroid langsam reagiert)
  • Indikatoren, markierte Daten (mindestens in this fork für Android)
  • iOS-Version mit dem gleichen Look and Feel
  • sauberer als die Android-Version aussieht, weil Monate sind getrennt klar

    enter image description here

Genau wie Caldroid es ein Teil von a productive app ist.

+0

"Indikatoren, hervorgehobene Daten (zumindest in dieser Gabel für Android)" - ist dies auch in Caldroid möglich? Ich bin in zwei Gedanken darüber, ob ich Caldroid oder dieses wählen soll, und ich brauche Hightlights. Danke. – Filip

1

können Sie MFCalendarView verwenden: https://github.com/MustafaFerhan/MFCalendarView

gesetzt mehrere Ereignisse;

ArrayList<String> eventDays = new ArrayList<String>(); 
eventDays.add("2014-02-25"); 
eventDays.add(Util.getCurrentDate()); 

mf.setEvents(eventDays); 

und Griff mit MFCalendarView des Zuhörers:

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) { 
      } 
    }); 

Es ist sehr einfach.

2

Diese Bibliothek scheint wirklich schön und mit einer moderneren Benutzeroberfläche (Material Design):

https://github.com/prolificinteractive/material-calendarview

Sie müssen nur importieren mit gradle:

compile 'com.prolificinteractive:material-calendarview:1.4.0' 

und fügen Sie Ihre in Layout:

<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" 
/> 

enter image description here

+0

Hallo Philippe, ich benutze den obigen Kalender view.every funktioniert gut Ich muss das Kalenderjahr 1990 einstellen, wie man das macht? Kannst du mir helfen? –

Verwandte Themen