Je suis assez nouveau dans le développement Android et je cherche un moyen d’inclure le calendrier dans mon application Android, mais j’ai mal fait de mal en googlant.
Est-il possible d’utiliser un type de vue de calendrier par défaut dans mon application? (serait idéal puisque l'interface utilisateur serait familier)
À défaut d'une option intégrée, existe-t-il de bonnes bibliothèques avec un contrôle de calendrier que je pourrais utiliser?
Je ne cherche pas à synchroniser et tout ça (du moins, à ce stade), je cherche seulement à avoir une vue de calendrier pour que je puisse afficher des informations à l'utilisateur.
J'ai écrit la bibliothèque Caldroid ( https://github.com/roomorama/Caldroid ) qui est simple à installer et possède de nombreuses fonctionnalités telles que la date d'installation min/max, les dates désactivées, la plage de dates sélectionnée, le balayage pour changer de mois entièrement localisé, prend en charge correctement la rotation, etc. Il est facile de personnaliser l'aspect et la convivialité. Juste pour partager si quelqu'un trouve cela utile :)
J'ai essayé Android-CalendarView , Caldroid et plus tard, je suis passé àAndroid-times-squarequi présente les améliorations suivantes:
semble plus propre que la version Android, car les mois sont clairement séparés
Tout comme Caldroid, il fait partie de une application productive .
À ma connaissance, il n’ya pas d’autre moyen que d’implémenter votre propre calendrier. Alors ... vous devez utiliser une GridLayout
à 7 colonnes et créer une BaseAdapter
personnalisée pour afficher les données correctement.
Android propose désormais trois méthodes pour intégrer des calendriers à votre application.
Affichage du calendrier pour choisir les dates et autres.
Fournisseur de calendrier peut être utilisé pour ajouter et supprimer des événements du calendrier du système d'exploitation.
Intentions de calendrier vous permettent de fournir un calendrier sans avoir à obtenir d’autorisations supplémentaires ni à gérer des bases de données.
c'est possible mais pas facile. http://jimblackler.net/blog/?p=151&cpage=2#comment-52767
et
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);
}
une recherche rapide sur content://com.Android.calendar/calendars
vous aidera à démarrer. mais je n'ai pas encore fini le mien, je ne peux tout simplement pas obtenir les données. mais c'est possible
Cette bibliothèque semble vraiment agréable et avec une interface utilisateur plus moderne (conception matérielle):
https://github.com/prolificinteractive/material-calendarview
Il vous suffit de l'importer avec gradle:
compile 'com.prolificinteractive:material-calendarview:1.4.0'
Et ajoutez-le dans votre mise en page:
<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"
/>
Vous pouvez utiliser le sélecteur de calendrier Android que j'ai créé, il s'agit d'un projet open source que vous pouvez facilement ajouter à votre projet.
Vous pouvez utiliser MFCalendarView: https://github.com/MustafaFerhan/MFCalendarView
définir plusieurs événements;
ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());
mf.setEvents(eventDays);
et gérer avec l'auditeur de 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) {
}
});
C'est très simple.