• Stars
    star
    178
  • Rank 214,989 (Top 5 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Utilitários Android para padrões Brasileiros

Android Canarinho

Build

Esta biblioteca é um conjunto de utilitários para trabalhar com padrões brasileiros no Android. Inspirado em: https://github.com/caelum/caelum-stella.

O foco aqui é o Android. Portanto, não é compatível com aplicações Java puras.

Entre os padrões implementados temos:

  • Formatador e validador de CPF
  • Formatador e validador de CNPJ
  • Formatador e validador de boleto bancário (e linha digitável)
  • Formatador e validador de CEP
  • Formatador de telefone
  • Formatador de valores financeiros (vírgula para milhares e ponto para decimais com duas casas)

Estes são utilizados para implementar TextWatchers que formatam e validam a digitação do usuário.

Exemplo de uso:

Validar um CPF

if (Validador.CPF.ehValido(cpf))
    Toast.makeText(context, "Válido!", Toast.LENGTH_SHORT).show();
else
    Toast.makeText(context, "Inválido!", Toast.LENGTH_SHORT).show();

Formatar um CPF

String cpfFormatado = Formatador.CPF.formata(usuario.getCpf());

Formatar um EditText para CPF sem validação

cpfEditText.addTextChangedListener(new MascaraNumericaTextWatcher("###.###.###-##"));

Formatar um EditText para CPF com validação

cpfEditText.addTextChangedListener(new MascaraNumericaTextWatcher.Builder()
                                        .paraMascara("###.###.###-##")
                                        .comCallbackDeValidacao(new SampleEventoDeValidacao(context))
                                        .comValidador(Validador.CPF)
                                        .build());

Formatador de valor financeiro no padrão Real

Para deixar um usuário digitar valores monetários no padrão Real, basta adicionar um ValorMonetarioWatcher e alguns atributos ao EditText

// Padrão sem símbolo de Real
editText.addTextChangedListener(new ValorMonetarioWatcher());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("12.345.678,90"));

// Customizado com símbolo e mantendo zeros ao apagar em lote
editText.addTextChangedListener(new ValorMonetarioWatcher.Builder()
        .comSimboloReal()
        .comMantemZerosAoLimpar()
        .build());
editText.append("1234567890");
assertThat(editText.getText().toString(), is("R$ 12.345.678,90"));

editText.getText().clear();
assertThat(editText.getText().toString(), is("R$ 0,00"));

Exemplo de declaração no layout:

<!--
     O inputType abre o teclado númerico e permite caracteres de 
    formatação. O text inicia com o valor zerado, porém não é 
    obrigatório.
-->
<android.support.design.widget.TextInputEditText
    android:id="@+id/amount"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_value"
    android:inputType="number"
    android:maxLength="13"
    android:text="0,00" />

Callback de validação

Os TextWatchers possuem a possibilidade de avisar o usuário conforme ele está digitando sobre algum erro de campo. Para isso, usamos um EventoDeValidacao que possui os seguintes callbacks:

  • void invalido(String valorAtual, String mensagem): chamado quando o valor está inválido
  • void parcialmenteValido(String valorAtual): chamado quando o valor ainda não está completo e também não está inválido
  • void totalmenteValido(String valorAtual): chamado quando o valor está completo e válido

Um exemplo de implementação:

public class SampleEventoDeValidacao implements EventoDeValidacao {

    private final TextInputLayout textInputLayout;

    public SampleEventoDeValidacao(TextInputLayout textInputLayout) {
        this.textInputLayout = textInputLayout;
    }

    @Override
    public void invalido(String valorAtual, String mensagem) {
        textInputLayout.setError(mensagem);
    }

    @Override
    public void parcialmenteValido(String valorAtual) {
        textInputLayout.setErrorEnabled(false);
        textInputLayout.setError(null);
    }

    @Override
    public void totalmenteValido(String valorAtual) {
        new AlertDialog.Builder(textInputLayout.getContext())
                .setTitle("Campo válido!")
                .setMessage(valorAtual)
                .show();
    }
}

Veja exemplos de implementação no sample.

Changelog

Ver CHANGELOG.md

Arquitetura

  • Formatador: Formata, desformata e verifica se um valor está formatado e se pode ser formatado. Opera com valores completos.
  • Validador: Valida de duas formas: absoluta (true ou false) e atualizando um objeto de validação (ResultadoParcial).
  • Watchers: implementações de TextWatchers para formatação e validação contínua (conforme a digitação do usuário).

Para exemplos, verifique os testes na pasta sample.

Gradle

allprojects { repositories { ... maven { url 'https://jitpack.io' } } }

implementation 'br.com.concrete:canarinho:{latest version}'

ATENÇÃO

Este projeto é desenvolvido de boa vontade e com o intuito de ajudar. No entanto, todo o desenvolvimento é feito SEM GARANTIAS.

LICENÇA

Este projeto é disponibilizado sob a licença Apache vesão 2.0. Ver declaração no arquivo LICENSE.txt

More Repositories

1

pareto.js

An extremely small, intuitive and fast functional utility library for JavaScript
TypeScript
261
star
2

qa-studyguide

177
star
3

front-end-guide

150
star
4

kappuccino

A kotlin library to simplify how to do espresso tests on Android.
Kotlin
110
star
5

android-studyguide

75
star
6

requestmatcher

A simple and powerful way for making programatic assertions in your fake API
Java
45
star
7

recrutamento-fe

Página do teste para o recrutamento de novos Front-Ends da Concrete Solutions
34
star
8

sunomono

A simple gem to generate all files needed in a project that will support Cucumber, Calabash Android and Calabash IOS and Appium Android and IOS.
Ruby
32
star
9

ng-security

A security module for AngularJS.
JavaScript
31
star
10

ios-recruiting-brazil

Desafio iOS da Concrete
30
star
11

desafio-java

26
star
12

yosef-android

An Android implementation of the Yosef protocol for dynamic views from the Backend
Kotlin
25
star
13

desafio-android

23
star
14

qa-automation-samples

Repository with examples of automation tools used by Concrete QAs
Java
23
star
15

magneton

A simple gem to generate all files needed in a project that will support Cucumber, SitePrism, Capybara and Selenium.
Ruby
17
star
16

qa-recruiting-brazil

Repositório com o desafio do Processo Seletivo para QA na Concrete
12
star
17

yosef-ios

yosef-ios
Swift
11
star
18

concrete_project_template

Concrete Project Template
Kotlin
10
star
19

tecla-sap

JavaScript
8
star
20

java-studyguide

7
star
21

java-recruiting-hsa

Java Recruiting Code Challenge for HSA
6
star
22

treinamentos-android

Conjunto de treinamentos Android
Java
4
star
23

cesta-basica

JavaScript
4
star
24

cs-dotnet-training

Estudo sobre .NET Core
C#
4
star
25

mock-api

Java
4
star
26

concrete_android_community

Reune referências técnicas de Android com análises, comparações entre bibliotecas, padrões de projetos e recomendações técnicas.
3
star
27

api-coupons-hsa

Coupons API for HSA Code Challenges
JavaScript
2
star
28

modern-js-guide

The Modern JavaScript Guide
2
star
29

ComposeKmmMoviesApp

Kotlin
2
star
30

frontend-recruiting-hsa

2
star
31

ios-recruiting-hsa

2
star
32

qa-recruiting-hsa

1
star
33

api-categories-hsa

Categories API for HSA Code Challenges
JavaScript
1
star
34

cs-links-api

Slack integrations for slash-command
JavaScript
1
star
35

desafio-node-espanol

Desafio de Node.js en castellano.
1
star
36

external-ios-recruiting-brazil

1
star
37

gotic

Go Terminal Interface Commander
Go
1
star
38

android-recruiting-hsa

Android Recruiting Code Challenge for HSA
1
star