quinta-feira, 16 de fevereiro de 2017

Android Drawable Importer Plugin

O plugin Android Drawable Importer adiciona uma opção ao IntelliJ para importar drawables em diferentes resoluções do AndroidIcons, possui repositórios ​​drawable e muda a escala de uma determinada imagem para baixo ou para cima de acordo com as resoluções definidas.

Esse plugin pode ser encontrado neste link:

Ou pode ser instalado por meio do próprio Android Studio, basta ir em:
File > Settings > Plugins

Pesquise por "Android Drawable Importer". Aparecerá a mensagem "No plugins found". Então clique em "Search in repositories" e depois em "Install". Depois da instalação dê um "Restart" no Android Studio.

Este plugin consiste em três características principais. Você pode acessá-los clicando com o botão direito do mouse em qualquer lugar, mas não em um arquivo, dentro de um módulo Android (biblioteca) em "New". Por exemplo, vá em "res", "drawable", clique com o botão direito do mouse e vá em "New". Então você encontrará as opções "Icon Pack Drawable Importer", "Batch Drawable Import" e "Multisource-Drawable".

Em "Icon Pack Drawable Importer", você pode selecionar o recurso, especificar sua cor, alterar o nome do recurso de destino e selecionar todas as resoluções que deseja importar. Todas as pastas em falta serão criadas automaticamente. Se já houver drawables com o mesmo nome, você será avisado. Você também pode importar Vector Drawables do pacote "Material Icons".

Em "Batch Drawable Import", selecione arquivos (ou uma pasta inteira) e especifique as resoluções de origem. Você também pode alterar o tamanho da fonte de cada imagem. Especifique todas as resoluções, para as quais ele deve ser redimensionado. Isso também funciona com 9-Patch-Images. Mas tenha cuidado: às vezes é necessário remover / adicionar um ou outro "pixel" no Editor de 9-Patch.

Caso você tenha recebido drawables para o seu projeto Android de seu designer com a seguinte estrutura:

root/
     ./drawable_ldpi.png
     ./drawable_mdpi.png
     ./drawable_hdpi.png
     ./drawable_xhdpi.png

Em "Multisource-Drawable", você pode apenas selecionar para cada resolução um recurso diferente, especificar um nome para eles, e o resto é feito pelo plugin. Ou mesmo mais fácil, você pode selecionar o zip inteiro, e este plugin extrairá automaticamente o recurso à melhor pasta.

terça-feira, 7 de fevereiro de 2017

Solicitar e Tratar Permissões para API 23 ou superior

A partir da API 23 (Android Marshmallow), o usuário tem o controle de aceitar individualmente as permissões que o aplicativo solicita. Portanto, além de colocar as uses-permission no manifest, é necessário solicitar todas as permissões individualmente ao usuário. Para isso, temos que criar um código parecido com o que está abaixo:

//Crie um array com as permissões necessárias
private String[] permissoesNecessarias = new String[] {
            android.Manifest.permission.SEND_SMS,
            android.Manifest.permission.INTERNET
};


//Crie uma classe para checar se as permissões foram aceitas
public class Permissao {

    public static boolean validaPermissoes(int requestCode, Activity activity, String[] permissoes) {

        if(Build.VERSION.SDK_INT >= 23) {
            List<String> listaPermissoes = new ArrayList<>();


            //Percorre as permissões passadas, verificando uma a uma se já tem a permissão liberada
            for (String permissao : permissoes) {
                Boolean validaPermissao = ContextCompat.checkSelfPermission(activity, permissao) == PackageManager.PERMISSION_GRANTED;
                if(!validaPermissao) listaPermissoes.add(permissao);
            }

            if(listaPermissoes.isEmpty()) return true;


            //Solicita permissão
            ActivityCompat.requestPermissions(activity, listaPermissoes.toArray(new String[0]), requestCode);
        }

        return true;
    }
}



//Gera AlertDialog para avisar que o Usuário só pode usar o App se aceitar as permissões
private void alertaValidacaoPermissao() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Permissões negadas");
    builder.setMessage("Para utilizar este app, é necessário aceitar as permissões");

    builder.setPositiveButton("CONFIRMAR", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
        }
    });

    AlertDialog dialog = builder.create();
    dialog.show();
}

 
//Tratar Negação de Permissão
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResult) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResult);
    for(int resultado : grantResult) {
        if(resultado == PackageManager.PERMISSION_DENIED) {
            alertaValidacaoPermissao();
        }
    }
}

segunda-feira, 6 de fevereiro de 2017

MaskFormatter: biblioteca Android para formatar Strings usando Máscaras

Para formatar e limitar uma entrada em um EditText, como datas e números de telefone, basta usar a classe MaskTextWatcher e SimpleMaskFormatter. Mas, antes de usá-las, é necessário adicionar a biblioteca colando o código a seguir em seu build.gradle (Module: app):

compile 'com.github.rtoshiro.mflibrary:mflibrary:1.0.0'

Exemplo de uso:

private EditText telefone;
telefone = (EditText) findViewById(R.id.edit_telefone);

// Crie uma máscara de formatação de string, 'N' para representar apenas números
SimpleMaskFormatter simpleMaskTelefone = new SimpleMaskFormatter("(NN) NNNN-NNNN");
MaskTextWatcher maskTelefone = new MaskTextWatcher(telefone, simpleMaskTelefone);
telefone.addTextChangedListener(maskTelefone);


Dessa maneira o telefone será formato como, por exemplo: (88) 9956-1517

A classe SimpleMaskFormatter vem com 5 padrões pré-definidos:
N - para números.
L - para letras.
L - para números e letras.
l - para letras minúsculas.
U - para letras maiúsculas.

Também é possível customizar os nossos próprios formatos. Veja o exemplo abaixo:

// permite apenas os números 0, 1, 2 e 3.
MaskPattern mp03 = new MaskPattern("[0-3]");
// permite os números de 0 a 9.
MaskPattern mp09 = new MaskPattern("[0-9]");
// permite apenas os números 0 e 1.
MaskPattern mp01 = new MaskPattern("[0-1]");

// Cria-se então uma nova máscara
MaskFormatter mf = new MaskFormatter("[0-1][0-9]/[0-3][0-9]/[0-9][0-9][0-9][0-9]");

// Registra-se os padrões no objeto MaskFormatter
mf.registerPattern(mp01);
mf.registerPattern(mp03);
mf.registerPattern(mp09);


Para maiores informações, basta acessar o link dessa biblioteca no GitHub:
https://github.com/rtoshiro/MaskFormatter

Espero ter ajudado! =)

sexta-feira, 3 de fevereiro de 2017

Atalhos do Eclipse no Android Studio

Você já programou muito pelo Eclipse, memorizou todos os seus atalhos e, por causa disso, gostaria de continuar utilizando esses mesmos atalhos no Android Studio? Pois seus problemas acabaram! Para que você possa realizar essa mudança de atalhos, basta ir na parte de Keymaps do Android Studio. Apresento-lhe abaixo duas formas de realizar essa alteração:

1ª Forma: 
File Settings Keymap Troque "Default" por "Eclipse"

2ª Forma:
Crtl + Shift + A digite "keymap" tecle enter escolha "Eclipse" 

Existem outras opções de mudança de atalhos, como Netbeans, entre outros.