Buscar..


Observaciones

Términos y conceptos

Tamaño de pantalla

Tamaño físico real, medido según la diagonal de la pantalla. Para simplificar, Android agrupa todos los tamaños de pantalla reales en cuatro tamaños generalizados: pequeño, normal, grande y extra grande.

Densidad de pantalla

La cantidad de píxeles dentro de un área física de la pantalla; Generalmente referido como dpi (puntos por pulgada). Por ejemplo, una pantalla de densidad "baja" tiene menos píxeles dentro de un área física determinada, en comparación con una pantalla de densidad "normal" o "alta". Para simplificar, Android agrupa todas las densidades de pantalla reales en seis densidades generalizadas: baja, media, alta, extra alta, extra extra alta y extra extra extra alta.

Orientación

La orientación de la pantalla desde el punto de vista del usuario. Esto es horizontal o vertical, lo que significa que la relación de aspecto de la pantalla es ancha o alta, respectivamente. Tenga en cuenta que no solo los diferentes dispositivos operan en diferentes orientaciones de manera predeterminada, sino que la orientación puede cambiar en el tiempo de ejecución cuando el usuario gira el dispositivo. Resolución El número total de píxeles físicos en una pantalla. Al agregar soporte para múltiples pantallas, las aplicaciones no funcionan directamente con resolución; las aplicaciones deben ocuparse únicamente del tamaño y la densidad de la pantalla, como lo especifican los grupos de tamaño y densidad generalizados. Píxel independiente de densidad (dp) Una unidad de píxeles virtual que debe usar al definir el diseño de la interfaz de usuario, para expresar las dimensiones o la posición del diseño de forma independiente de la densidad. El píxel independiente de la densidad es equivalente a un píxel físico en una pantalla de 160 ppp, que es la densidad de referencia asumida por el sistema para una pantalla de densidad "media". En tiempo de ejecución, el sistema maneja de forma transparente cualquier escala de las unidades dp, según sea necesario, en función de la densidad real de la pantalla en uso. La conversión de unidades dp a píxeles de pantalla es simple: px = dp * (dpi / 160). Por ejemplo, en una pantalla de 240 ppp, 1 dp equivale a 1.5 píxeles físicos. Siempre debe usar unidades dp al definir la interfaz de usuario de su aplicación, para garantizar una visualización adecuada de su interfaz de usuario en pantallas con diferentes densidades.


Unidades

  • px

    Píxeles: corresponde a los píxeles reales en la pantalla.

  • en

    Pulgadas - basado en el tamaño físico de la pantalla. 1 pulgada = 2.54 centímetros

  • mm

    Milímetros - basado en el tamaño físico de la pantalla.

  • pt

    Puntos: 1/72 de pulgada según el tamaño físico de la pantalla.

  • dp o dip

    Píxeles independientes de la densidad: una unidad abstracta que se basa en la densidad física de la pantalla. Estas unidades son relativas a una pantalla de 160 ppp, por lo que un dp es un píxel en una pantalla de 160 ppp. La proporción de dp a píxel cambiará con la densidad de la pantalla, pero no necesariamente en proporción directa. Nota: El compilador acepta tanto "dip" como "dp", aunque "dp" es más consistente con "sp".

  • sp

    Píxeles independientes de la escala: esto es como la unidad dp, pero también se escala según la preferencia de tamaño de fuente del usuario. Se recomienda utilizar esta unidad cuando especifique tamaños de fuente, por lo que se ajustarán tanto para la densidad de la pantalla como para las preferencias del usuario. De entender la independencia de densidad en Android:


Unidad Descripción Unidades por pulgada física Densidad Independiente Mismo tamaño físico en cada pantalla
px Pixeles Varía No No
en Pulgadas 1
mm Milimetros 25.4
pt Puntos 72
dp Densidad de píxeles independientes ~ 160 No
sp Escala de píxeles independientes ~ 160 No

Referencias:

Uso de calificadores de configuración

Android admite varios calificadores de configuración que le permiten controlar cómo el sistema selecciona sus recursos alternativos según las características de la pantalla del dispositivo actual. Un calificador de configuración es una cadena que puede adjuntar a un directorio de recursos en su proyecto de Android y especifica la configuración para la cual se diseñan los recursos.

Para utilizar un calificador de configuración:

  1. Cree un nuevo directorio en el directorio res / de su proyecto y asígnele un nombre con el formato: <resources_name>-<qualifier> . <resources_name> es el nombre del recurso estándar (como drawable o layout).
  2. <qualifier> es un calificador de configuración, que especifica la configuración de la pantalla para la cual se utilizarán estos recursos (como hdpi o xlarge).

Por ejemplo, los siguientes directorios de recursos de aplicaciones proporcionan diferentes diseños de diseño para diferentes tamaños de pantalla y diferentes elementos dibujables. Utilice el mipmap/ carpetas para los iconos de inicio.

res/layout/my_layout.xml              // layout for normal screen size ("default")
res/layout-large/my_layout.xml        // layout for large screen size
res/layout-xlarge/my_layout.xml       // layout for extra-large screen size
res/layout-xlarge-land/my_layout.xml  // layout for extra-large in landscape orientation

res/drawable-mdpi/graphic.png         // bitmap for medium-density
res/drawable-hdpi/graphic.png         // bitmap for high-density
res/drawable-xhdpi/graphic.png        // bitmap for extra-high-density
res/drawable-xxhdpi/graphic.png       // bitmap for extra-extra-high-density

res/mipmap-mdpi/my_icon.png         // launcher icon for medium-density
res/mipmap-hdpi/my_icon.png         // launcher icon for high-density
res/mipmap-xhdpi/my_icon.png        // launcher icon for extra-high-density
res/mipmap-xxhdpi/my_icon.png       // launcher icon for extra-extra-high-density
res/mipmap-xxxhdpi/my_icon.png      // launcher icon for extra-extra-extra-high-density

Convertir dp y sp a píxeles

Cuando necesita establecer un valor de píxel para algo como Paint.setTextSize pero aún desea que se escale según el dispositivo, puede convertir los valores dp y sp.

DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, metrics);

DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12f, metrics);

Alternativamente, puede convertir un recurso de dimensión en píxeles si tiene un contexto para cargar el recurso.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="size_in_sp">12sp</dimen>
    <dimen name="size_in_dp">12dp</dimen>
</resources>

// Get the exact dimension specified by the resource
float pixels = context.getResources().getDimension(R.dimen.size_in_sp);
float pixels = context.getResources().getDimension(R.dimen.size_in_dp);

// Get the dimension specified by the resource for use as a size.
// The value is rounded down to the nearest integer but is at least 1px.
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_dp);

// Get the dimension specified by the resource for use as an offset.
// The value is rounded down to the nearest integer and can be 0px.
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_dp);

Tamaño del texto y diferentes tamaños de pantalla de Android

A veces, es mejor tener solo tres opciones

 style="@android:style/TextAppearance.Small"
 style="@android:style/TextAppearance.Medium"
 style="@android:style/TextAppearance.Large"

Use pequeñas y grandes para diferenciarse del tamaño de pantalla normal.

<TextView
        android:id="@+id/TextViewTopBarTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/TextAppearance.Small"/>

Para normal, no tienes que especificar nada.

<TextView
        android:id="@+id/TextViewTopBarTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

Usando esto, puede evitar probar y especificar dimensiones para diferentes tamaños de pantalla.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow