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