Este aplicativo serve como uma alternativa para o site da rede de cinemas Cinemais. É possível ver:
- Filmes em cartaz e próximos lançamentos.
- Programação, tabela de preços e outras informações de cada cinema da rede.
- Detalhes de um determinado filme, como sinopse, duração, gêneros, trailers e mais.
Este aplicativo foi construído para por em prática conhecimentos de algumas bibliotecas encontradas no Android Architecture Components, então é possível ver o uso dos seguintes componentes: ViewModels, LiveData e WorkManager.
Tela Inicial | Filmes | Detalhes Filme | Detalhes Cinema | Modo Escuro |
---|---|---|---|---|
Esse aplicativo possui as seguintes telas:
- Uma tela inicial semelhante a tela inicial da versão desktop do site oficial;
- Uma tela com os filmes em cartaz (em todos os cinemas da rede) e próximos lançamentos;
- Detalhes de um filme específico (sinopse, gêneros, elenco, duração, etc);
- Uma lista de cinemas da rede;
- Detalhes de um cinema específico (programação, tabela de preços, localização, etc);
- Uma tela de configurações bem simples com opção de escolher entre modo escuro e padrão;
- Uma tela com informações do aplicativo e informações de contato;
- Filtro de programação e notificações de estreias da semana para o cinema escolhido.
A arquitetura foi criada com base nos componentes encontrados no Android Architecture Components.
Model-View-ViewModel (MVVM) foi usado para a camada de apresentação. A View e ViewModels se comunicam usando LiveData e a Data Binding Library foi utilizado "bindar" os dados na interface do usuário.
Repository Pattern foi usado para lidar com as operações de dados. Todos os dados do Cinemais são retirados diretamente do site oficial através do uso das bibliotecas Retrofit, para efetuar as requisições HTTP, e jsoup, para extrair os dados de cada página. Um modo off-line simples foi implementado através da função de cache do OkHttp.
- Dagger 2 para dependency injection e reduzir código boilerplate.
- Glide para carregar imagens de forma eficiente.
- LeakCanary para detectar vazamentos de memória.
- Mockito Unit tests.
- Notify para criar notificações de forma simples.
- Timber logs úteis durante o desenvolvimento.
Copyright 2019 Diego Bezerra.
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.