2010-09-13 19 views
12

Jestem całkiem nowy w rozwoju Androida i szukam sposobu na włączenie kalendarza do mojej aplikacji na Androida, ale bardzo dobrze wyglądam podczas googlowania.Widok kalendarza z Androidem

  1. Czy istnieje sposób użycia domyślnego widoku kalendarza w mojej aplikacji? (byłoby idealne, ponieważ interfejs użytkownika byłby znajomy)

  2. W przypadku braku wbudowanej opcji, czy istnieją dobre biblioteki z kontrolerem kalendarza, którego mogłem użyć?

Nie zamierzam synchronizować i tego wszystkiego (przynajmniej w tym momencie), po prostu patrząc na widok kalendarza, w którym mogę wyświetlać informacje użytkownikowi.

Odpowiedz

7

AFAIK, nie ma innego sposobu niż wdrożenie własnego kalendarza. Więc ... co musisz zrobić, to użyć GridLayout z 7 kolumnami i utworzyć niestandardową BaseAdapter, aby wyświetlać dane poprawnie.

2

jest to możliwe, ale nie łatwe. http://jimblackler.net/blog/?p=151&cpage=2#comment-52767

i

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

} 

szybkie wyszukiwanie w treści: //com.android.calendar/calendars pomogą Ci zacząć. ale nie jestem jeszcze skończony, ale nie mogę jeszcze uzyskać danych. ale jest to możliwe

+0

Czy udało Ci się dodać domyślny kalendarz do swojej aplikacji? Proszę daj mi znać. Potrzebuję pomocy w tej sprawie. Dzięki –

5

Android oferuje teraz trzy sposoby włączenia kalendarzy do aplikacji.

  1. na daty odbioru i inne.

  2. Calendar provider można uzyskać dostęp do dodawania i usuwania zdarzeń z kalendarza systemu operacyjnego.

  3. Calendar intents Umożliwia udostępnienie kalendarza bez konieczności uzyskiwania dodatkowych uprawnień lub korzystania z baz danych.

+0

Niestety działa to tylko w interfejsie API11 lub nowszym. Byłoby miło, gdyby ktoś stworzył dobry backport, abyś mógł wesprzeć 2.x wersje – THelper

31

pisałem bibliotekę Caldroid (https://github.com/roomorama/Caldroid), który jest prosty w instalacji i ma wiele funkcji, takich jak setup min/max daty, daty niepełnosprawnych, wybierz zakres dat, machnięcia, aby zmienić miesiąc, w pełni zlokalizowana, obrót wsparcie prawidłowo etc Łatwo dostosować wygląd i styl. Po prostu udostępniaj, jeśli ktoś może Ci się przydać :)

+0

hej, użyłem twojego kalendarza i jest niesamowity. ale muszę ustawić zdarzenia na bieżąco. tak jak potrzebuję dostosować kolory daty zgodnie z wydarzeniem, które mają w tym dniu. Czy możesz dać mi mały pomysł, w jaki sposób mogę to osiągnąć? –

+0

Możesz wyświetlić swój własny widok dla każdej komórki na podstawie daty, można go znaleźć w dokumentacji https://github.com/roomorama/Caldroid#allow-customized-cell-for-the-dates-gridview You może znaleźć zastosowanie w próbce – thomasdao

+0

Utknąłem w tym problemie, czy możesz to sprawdzić? https://github.com/roomorama/Caldroid/issues/24 –

9

Próbowałem android-CalendarView, Caldroid a później włączony do android-times-square który ma ten ulepszenia:

  • Znacznie szybsze przełączanie do innych miesięcy z powodu przewijania pionowego (bez paginacji, która reaguje powoli Caldroid)
  • Wskaźniki, podświetlone daty (przynajmniej w this fork dla Androida)
  • wersja iOS dostępny z tym samym wyglądem i
  • wygląda czystsze niż android ponieważ miesięcy są wyraźnie oddzielone

    enter image description here

Podobnie jak Caldroid jest częścią a productive app.

+0

"Wskaźniki, podświetlone daty (przynajmniej w tym widelcu dla Androida)" - czy jest to również możliwe w Caldroid? Jestem w dwóch umysłach, czy wybrać kaldroida czy ten, i potrzebuję ciemnych dat ... Dzięki. – Filip

1

Można użyć MFCalendarView: https://github.com/MustafaFerhan/MFCalendarView

zestaw wielu zdarzeń;

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

mf.setEvents(eventDays); 

i uchwyt ze słuchaczem MFCalendarView za:

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

To bardzo proste.

2

Biblioteka ta wydaje się naprawdę miły i bardziej nowoczesnego interfejsu użytkownika (Materiał Design):

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

po prostu trzeba importować je z Gradle:

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

i dodać go w 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

Witam Philippe i jestem za pomocą powyższego widoku kalendarza. Wszystko działa dobrze Muszę ustawić rok kalendarzowy w 1990 roku, jak to zrobić? Czy możesz mi pomóc –