DESARROLLADOR

Cómo convertir píxeles de Android a pulgadas

Una pregunta común de los desarrolladores de Android sobre la compatibilidad con varias pantallas es: ¿Cómo convierto píxeles a pulgadas? Esta es una manera fácil de lograr esa tarea.

android091913

Una de las mejores cosas del sistema operativo Android para usuarios y fabricantes de dispositivos es que no hay restricciones en el tamaño de la pantalla. Por un lado, están los dispositivos Android con pantallas diminutas, como el G Watch portátil. En el otro extremo están los dispositivos de transmisión con pantallas enormes, como el Galaxy Mega de Samsung. Como desarrolladores, debemos escribir código que sobresalga en ambos extremos y en todos los puntos intermedios.

Para ayudar a los desarrolladores a lograr el noble objetivo de escribir un código de interfaz de usuario que se adapte a varios tamaños de pantalla, Google nos brinda herramientas para descubrir el tamaño de la pantalla, la densidad, la orientación, la resolución y la unidad de medida favorita de todos: dp (píxeles independientes de la densidad). Google tiene una guía detallada muy buena (muy larga) para admitir múltiples pantallas.

Sin embargo, incluso con la orientación oficial de Google, una pregunta común que veo en los foros es: «¿Cómo convierto píxeles a pulgadas?» El siguiente ejemplo muestra una forma sencilla de lograrlo. Puede seguir el tutorial paso a paso o descargar el proyecto completo e importarlo directamente a Eclipse.

1. Cree un nuevo proyecto de Android en Eclipse. Objetivo SDK 14 (ICS) o posterior.

2. Modifique el archivo /res/layout/activity_main.xml para incluir una vista de texto y un botón, ambos envueltos en un diseño lineal.

actividad_principal.xml

3. Vayamos al archivo /src/MainActivity.java. Ya debería estar familiarizado con las anulaciones onCreate() y onClick(): estamos haciendo setViewWidthInInches(), que cambia el tamaño de la vista. La idea general es obtener los píxeles por pulgada y luego multiplicar ese número por la pulgada de ancho que queremos.

LEER  Cómo definir DNS en un contenedor Docker

MainActivity.java
paquete com.authorwjf.dospulgadas;

importar android.app.Actividad;
importar android.os.Bundle;
importar android.util.DisplayMetrics;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.LinearLayout;
importar android.widget.LinearLayout.LayoutParams;

La clase pública MainActivity amplía la actividad e implementa OnClickListener {

flotador final estático privado DOS_PULGADAS = 2f;

@cubrir
Vacío protegido onCreate (Paquete de estado de instancia guardado) {
super.onCreate(estadoDeInstanciaGuardado);
setContentView(R.diseño.actividad_principal);
findViewById(R.id.scale_button).setOnClickListener(this);
}

@cubrir
public void onClick(ver v) {
Ver textView = findViewById(R.id.text);
setViewWidthInInches(TWO_INCHES, textView);
}

privado void setViewWidthInInches(pulgadas flotantes, ver v) {
Métricas DisplayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(métricas);
float mXDpi = métricas.xdpi;
int dosPulgadas = Math.round(pulgadas*mXDpi);
v.setLayoutParams(nuevo LinearLayout.LayoutParams(dos pulgadas, LayoutParams.WRAP_CONTENT));
v.requestLayout();
}

}

Figura A Se muestra un Nexus 7 real con la regla colocada a lo largo de la vista correspondiente: exactamente 2 pulgadas.

Figura A

measuredonandroiddevice081914

notas: Muchos desarrolladores han informado problemas con el emulador de Android que devuelve la densidad de pantalla incorrecta; lo he encontrado varias veces. Dado que el algoritmo que usamos para diseñar el ancho de la vista depende de conocer la densidad de visualización del dispositivo, recomiendo ejecutar el ejemplo de código anterior solo en hardware real.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba