Desafio – Filmes ??

O desafio consistia em criar um app que se assemelhasse a tela de informações do filme do app TodoMovies.

Screenshot de referência

Screenshot do meu app

Para obter as informações sobres os filmes, foi pedido que utilize a api do site [The Movie Database](API Docs (themoviedb.org))

Requisitos do projeto

  • Usar alguma arquitetura : Clean + MVVM .
  • Receber as informações através do endpoint getMovieDetails.
  • Usar o vote_count que retorna da API para representar o número de likes.
  • Substituir o “3 of 10 watched” por “ views”, utilizando o valor retornado da API e mantendo algum ícone ao lado.
  • O ícone de like (coração) deve mudar quando clicado, alternando entre preenchido e vazio.
  • Deve haver uma lista de filmes abaixo dos detalhes.
  • O app deve ser desenvolvido utilizando a linguagem Kotlin.
  • O projeto deve ser disponibilizado em um repositório aberto no GitHub. Envie a URL assim que possível.

Tecnologias utilizadas

  • CoordinatorLayout + CollapsingToolbarLayout para exibir o cartaz de cada filme.
  • Injeção de dependências com Koin.

  • Retrofit para requisições da API.

  • RecyclerView com ListAdapter para exibição de listas.

Resultado

Acesse aqui o link para o vídeo no youtube, contendo o resultado final do app:

Estou bem satisfeito com o resultado final, consegui fazer a maioria do que pretendia fazer desde o começo do projeto, com mais tempo gostaria de aprender a usar o DataStore para cachear alguma informações da api em que utilizei enums, como Lista de Gêneros de filmes, e configurações para a exibição de imagens, assim também como uma sessão que mostrassem o diretor e diretores envolvidos em cada filme.

Collapsing Toolbar

Lista de Filmes

Carregando um Filme da lista no Layout

Consegui também adicionar funções que não foram solicitadas, como conseguir carregar os filmes da lista de similares, e utilizar tela de carregamentos. Mas gostaria mesmo de ter utilizado o Jetpack Navigation para fazer pelo menos mais uma tela, para pesquisa de filmes pelo nome, utilizando o endpoint search/movie.

GitHub

View Github