2010-09-13 2 views
12

Я довольно новичок в разработке Android, и я ищу способ включения календаря в приложение для Android, но я поражаю себя очень плохо, когда гуглинг.Android calendar calendar

  1. Есть ли способ использовать вид календаря по умолчанию в моем приложении? (было бы идеально, так как пользовательский интерфейс был бы знаком)

  2. Невозможно использовать встроенную опцию, есть ли там хорошие библиотеки с календарным управлением, которым я мог бы пользоваться?

Я не ищу, чтобы синхронизировать и все, что (по крайней мере, на данный момент), просто хочется иметь вид календаря, что я может отображать информацию для пользователя.

ответ

7

AFAIK, нет другого способа, чем реализовать собственный календарь. Итак ... что вам нужно сделать, это использовать GridLayout с 7 столбцами и создать пользовательский BaseAdapter для корректного отображения данных.

2

можно, но не легко. 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); 

} 

быстрый поиск по содержания: //com.android.calendar/calendars поможет вам начать работу. но я не закончил мою, но я просто не могу получить данные. но возможно

+0

Вы успешно добавили календарь по умолчанию в свое приложение? Пожалуйста, дайте мне знать. Мне нужна помощь. Спасибо –

5

Android теперь предлагает три способа включения календарей в ваше приложение.

  1. Calendar view для выбора даты и т. Д.

  2. Calendar provider может быть доступен для добавления и удаления событий из календаря ОС.

  3. Calendar intents позволяет вам предоставлять календарь без необходимости получения дополнительных разрешений или работы с базами данных.

+0

К сожалению, это работает только на API11 или новее. Было бы неплохо, если бы кто-то создал хороший backport, чтобы вы могли поддерживать версии 2.x – THelper

31

Я написал Caldroid библиотеки (https://github.com/roomorama/Caldroid), которая проста в установку и имеет множество функций, такие как установка мин/макс дата, даты инвалидов, выберите диапазон дат, Размах изменить месяц, полностью локализован, вращение поддержки должным образом и т.д. . Легко настроить внешний вид. Просто, чтобы поделиться, если кто-то может найти это полезным :)

+0

эй, я использовал ваш календарь, и это потрясающе. но мне нужно установить события на дату. например, мне нужно настроить цвета даты в соответствии с тем событием, которое они имели в эту дату. Можете ли вы дать мне небольшую идею, как я могу это сделать? –

+0

Вы можете предоставить свое представление для каждой ячейки на основе даты, вы можете найти ее в документации https://github.com/roomorama/Caldroid#allow-customized-cell-for-the-dates-gridview Вы может найти, как использовать его в образце, а также – thomasdao

+0

Я застрял в этой проблеме, не могли бы вы проверить? https://github.com/roomorama/Caldroid/issues/24 –

1

Вы можете использовать андроид-календарь, который я создал, это проект с открытым исходным кодом, и вы можете легко добавить его в свой проект.

https://github.com/sancarbar/Android-Calendar-Picker

9

Я попытался android-CalendarView, Caldroid, а затем перешел на android-times-square, который имеет это улучшение:

  • Гораздо быстрее переключения на другие месяцы из-за вертикальную прокрутку (без пагинации, который реагирует медленно Caldroid)
  • Индикаторы, выделенные даты (по крайней мере в this fork для android)
  • IOS версии доступны с тем же выглядеть и чувствовать себя
  • выглядит чище, чем андроид версии, потому что месяцы четко разделены

    enter image description here

Так же, как Caldroid это часть a productive app.

+0

«Индикаторы, выделенные даты (по крайней мере, в этой вилке для Android)» - это также возможно в Caldroid? Я нахожусь в двух умах, нужно ли выбирать калдоид или этот, и мне нужны даты подсчета очков ... Спасибо. – Filip

1

Вы можете использовать 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) { 
      } 
    }); 

Это очень просто.

2

Эта библиотека кажется очень красиво и с более современным интерфейсом (Material Design):

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

enter image description here

+0

Привет, Филипп, я использую выше вид календаря. Все отлично работают, мне нужно установить год каландра в 1990 году, как это сделать? Можете ли вы мне помочь? –