Talk sobre a criação de Custom View no Android.
Evento Meetup Online #9 - Android Custom View foi realizado no dia foi realizado no dia 29/09/2020, sendo transmitido através do YouTube. A apresenção esta diponível no link.
O projeto foi dividido em três módulos, sendo dois módulos core.
Este módulo contém a aplicação demo, onde, temos três activity's, sendo elas:
- A MainActivity é a tela inicial da aplicação com links para as demais;
- A CustomEditTextActivity possui todos os formatos disponíveis do CustomEditText;
- A CustomButtonActivity possui todos os formatos disponíveis do CustomButtom.
Este módulo centraliza toda a parte de design system do app, controlando os estilos da aplicação.
Este módulo também centraliza as Custom View do projeto, conforme abaixo:
- O CustomEditText possui a implementação de vários formatos de entrada de texto, como o texto, apenas número, reais, telefone, CPF e CNPJ. Na parte de validações e mascaras foi utilizado a lib Android Canarinho.
- O CustomButton possui a implementação de vários formatos de botões, além de diponibilizar a opção de loading. Dentro dos formatos temos o padrão, WhatsApp (Com e sem o número) e telefone (Com e sem o número), podendo todos estarem no estado desabilitado.
Este módulo compartilha a base do Robot Pattern entre os módulos que possuem testes instrumentais.
Dentro deste módulo podemos destacar:
- A classe ActionRobot responsável por disponibilizar as ações, como por exemplo, Click em botões, Preenchimento de texto no edittext, etc;
- A classe AssertRobot.kt disponibiliza mecanismo de checagem da screen do android, como por exemplo, checagem se um texto esta visível na tela, se um checkbox esta marcado ou não, se o custom buttom esta em modo de loading, etc;
- O arquivo Actions fornece funções personalizadas, utilizadas pela classe ActionRobot;
- O arquivo Matchers fornece funções personalizadas, utilizadas pela classe AssertRobot.kt.
Os testes instrumentais foram criados no módulo app, onde temos as a CustomEditTextActivity e a CustomButtonActivity.
Para cada tela foi criado um arquivo de teste, sendo eles:
- O arquivo CustomButtonActivityTest.kt é responsável pelo teste da CustomEditTextActivity;
- Para realizar os testes é utilizado o arquivo CustomButtonActivityRobot.kt que faz parte da arquitetura do Robot Pattern;
- O arquivo CustomEditTextActivityTest.kt é responsável por fazer o teste da CustomButtonActivity;
- Para realizar os testes é utilizado o arquivo CustomEditTextActivityRobot.kt que faz parte da arquitetura do Robot Pattern.
Neste projeto foi implementado os testes unitários do CustomButton, utilizando como fonte o artigo Unit Testing Custom View in Android. Para mais detalhes consulte o código da classe de teste CustomButtonTest.