Android como adicionar tamanhos flexíveis em views (dip)

Fala galera! Este é meu primeiro post aqui para testar a interface do WordPress, que eu ainda não sou familiarizado, porem como quase tudo na vida requer treino (inclusive programação em android) só vou aprender postando.

Sei que o meu primeiro post sobre Android deveria ser uma visão geral, mas como ja está tarde e eu queria deixar algo ainde hoje aqui, vou colocar um breve post de como trabalhar com medidas flexíveis na tela. Então vamos la.

E o que seria isso, por exemplo você precisa colocar um padding em alguma que você possui na tela por exemplo um Button se você colocar o numero direto como por exemplo:


Button button = new Button(this);
button.setPadding(5, 10, 5, 10);

Se você testar em diferentes smartphones irá perceber que a distância vai variar se  pelo fato de que existem varios tipos de telas com densidades diferentes.

Então como resolver?

É simples O android possui uma classe que ja faz a conversão de um tamanho fixo para o dip, que seria uma unidade que não tem diferença entre as telas chamda TypedValue.

Aconselho você criar uma classe chamada por exemplo de Utilitarios e colocar seguinte método.

package pedreirosdosoftware.Utilitarios;

import android.app.Activity;
import android.util.TypedValue;

public class Utilitarios {

public static int toDIP(Activity context, float tamanho){

int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, tamanho, context.getResources().getDisplayMetrics());

return value;

}

}

O mesmo procedimento mostrado anteriormente seria feito por exemplo desta forma.
int valor = Utilitarios.toDIP(this, 40);//Como o método é static você não precisa instanciar um objeto para chamar
Button button = new Button(this);
button.setPadding(valor, valor, valor, valor);

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>