CompactCalendarView é uma visualização de calendário simples que fornece rolagem entre meses. É baseado nas classes Date e Calendar do Java. Ele fornece uma API simples para consultar datas e ouvintes de eventos específicos. Por exemplo, quando o calendário foi rolado para um novo mês ou um dia foi selecionado. Ainda em desenvolvimento ativo.
Por favor, levante uma questão do requisito para que uma discussão possa ocorrer antes de qualquer código ser escrito, mesmo se você pretende levantar uma solicitação pull. Consulte a configuração para teste.
CompactCalendarView faz uso de testes de captura de tela para Android (https://github.com/facebook/screenshot-tests-for-android). Isto é para testes de IU. Como o screenshot-tests-for-android faz capturas de tela, precisamos de uma maneira de garantir que as imagens possam ser reproduzidas de forma consistente. Para isso, um emulador específico é utilizado para executar testes. Infelizmente, um emulador mais antigo é usado por enquanto. Novas solicitações pull que alteram a funcionalidade de alguma forma devem ter como objetivo criar novos testes de captura de tela ou testes de unidade, se possível. Para executar isso localmente, execute os comandos abaixo:
Pré-requisito (consulte também .travis.yml):
O emulador Android 19 é usado porque parece ser rápido o suficiente no travis-ci e porque emuladores x86 não são suportados no travis-ci. Uma versão mais recente do Android é possível, mas o tempo de construção aumentará.
Instale o abi e aceite:
$ $ANDROID_HOME /tools/bin/sdkmanager ' system-images;android-22;default;armeabi-v7a '
Crie o emulador:
$ echo no | $ANDROID_HOME /tools/bin/avdmanager create avd --force -n testCompactCalendarEmulator -k " system-images;android-22;default;armeabi-v7a "
Criar cartão SD (criando no diretório atual): Quaisquer problemas com o cartão SD são melhor resolvidos excluindo e tentando novamente
$ mksdcard -l sdcard 100M sdcard
Execute o emulador (sem áudio e janela):
$ $ANDROID_HOME /emulator/emulator -avd testCompactCalendarEmulator -no-audio -no-window -sdcard sdcard &
Execute o emulador e assista (com áudio e janela):
$ $ANDROID_HOME /emulator/emulator -avd testCompactCalendarEmulator -sdcard sdcard
Executando os testes para verificar se os testes atuais foram aprovados e para verificar quais testes não estão produzindo a mesma captura de tela:
$ ./gradlew verifyMode screenshotTests
Para gerar novas capturas de tela caso novos testes tenham sido adicionados:
$ ./gradlew recordMode screenshotTests
Execute os testes de unidade como abaixo:
$ ./gradlew test
É possível testar usando o emulador do Android Studio. No entanto, deve ser Android 19 e resolução de tela de 480x800. Um exemplo é o emulador Nexus S. Basta iniciar o emulador e executar os comandos gradle para executar os testes. O emulador deve ser encontrado automaticamente.
A biblioteca suporta abertura/fechamento com ou sem animações.
É possível alterar a aparência da visualização através de algumas propriedades. Isso inclui a cor de fundo, a cor do texto, a cor do tamanho do texto do dia atual e a cor do primeiro dia do mês.
< com .github.sundeepk.compactcalendarview.CompactCalendarView
xmlns : app = " http://schemas.android.com/apk/res-auto "
android : id = " @+id/compactcalendar_view "
android : layout_width = " fill_parent "
android : paddingRight = " 10dp "
android : paddingLeft = " 10dp "
android : layout_height = " 250dp "
app : compactCalendarTargetHeight = " 250dp "
app : compactCalendarTextSize = " 12sp "
app : compactCalendarBackgroundColor = " #ffe95451 "
app : compactCalendarTextColor = " #fff "
app : compactCalendarCurrentSelectedDayBackgroundColor = " #E57373 "
app : compactCalendarCurrentDayBackgroundColor = " #B71C1C "
app : compactCalendarMultiEventIndicatorColor = " #fff "
/>
Consulte o aplicativo de exemplo para obter um exemplo completo.
// ... code omitted for brevity
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
final CompactCalendarView compactCalendarView = ( CompactCalendarView ) findViewById ( R . id . compactcalendar_view );
// Set first day of week to Monday, defaults to Monday so calling setFirstDayOfWeek is not necessary
// Use constants provided by Java Calendar class
compactCalendarView . setFirstDayOfWeek ( Calendar . MONDAY );
// Add event 1 on Sun, 07 Jun 2015 18:20:51 GMT
Event ev1 = new Event ( Color . GREEN , 1433701251000L , "Some extra data that I want to store." );
compactCalendar . addEvent ( ev1 );
// Added event 2 GMT: Sun, 07 Jun 2015 19:10:51 GMT
Event ev2 = new Event ( Color . GREEN , 1433704251000L );
compactCalendar . addEvent ( ev2 );
// Query for events on Sun, 07 Jun 2015 GMT.
// Time is not relevant when querying for events, since events are returned by day.
// So you can pass in any arbitary DateTime and you will receive all events for that day.
List < Event > events = compactCalendar . getEvents ( 1433701251000L ); // can also take a Date object
// events has size 2 with the 2 events inserted previously
Log . d ( TAG , "Events: " + events );
// define a listener to receive callbacks when certain events happen.
compactCalendarView . setListener ( new CompactCalendarView . CompactCalendarViewListener () {
@ Override
public void onDayClick ( Date dateClicked ) {
List < Event > events = compactCalendarView . getEvents ( dateClicked );
Log . d ( TAG , "Day was clicked: " + dateClicked + " with events " + events );
}
@ Override
public void onMonthScroll ( Date firstDayOfNewMonth ) {
Log . d ( TAG , "Month was scrolled to: " + firstDayOfNewMonth );
}
});
}
Você pode modificar indicadores usando uma predefinição de estilos, abaixo está um exemplo, mas algumas outras combinações também são possíveis:
Observe que o calendário não tenta desduplicar eventos para o mesmo DateTime exato. Isso é algo que você mesmo deve cuidar se for importante para o seu caso de uso.
É possível definir a localidade para que os nomes das colunas dos dias da semana sejam definidos automaticamente pelo calendário.
CompactCalendarView compactCalendarView = ( CompactCalendarView ) findViewById ( R . id . compactcalendar_view );
compactCalendarView . setLocale ( Locale . CHINESE );
compactCalendarView . setUseThreeLetterAbbreviation ( true );
dependencies {
compile ' com.github.sundeepk:compact-calendar-view:3.0.0 '
}
The MIT License (MIT)
Copyright (c) [2018] [Sundeepk]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.