Skip to content
Utilitários Android para padrões Brasileiros
Java
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Create issue templates Oct 9, 2018
canarinho Fix release repo configuration Dec 5, 2018
gradle/wrapper Ajusta typo e atualiza build Feb 19, 2018
sample Merge 'rafaeltoledo/cn-master' Dec 3, 2018
tools/linters Refatora para 2.0 Nov 11, 2017
.gitignore Commit inicial Jun 26, 2015
.travis.yml Ajusta typo e atualiza build Feb 19, 2018
CHANGELOG.md
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Oct 9, 2018
LICENSE.txt Ajustada documentação e publicação Jun 26, 2015
PULL_REQUEST_TEMPLATE.md Traduz template de pull request Dec 5, 2018
README.md Adiciona badge de versão no README Dec 5, 2018
android-canarinho.png
build.gradle Ajusta typo e atualiza build Feb 19, 2018
gradle.properties Refatora para 2.0 Nov 11, 2017
gradlew Commit inicial Jun 26, 2015
gradlew.bat Commit inicial Jun 26, 2015
settings.gradle Alterada estrutura de pastas para aderir à estrutura do bintray Jun 29, 2015

README.md

Android Canarinho

Build Download

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

compile '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

You can’t perform that action at this time.