PixelRatio en React Native: Manejo de Resolución de Pantalla

  ¿Qué es PixelRatio y para qué se usa?

PixelRatio en React Native es un módulo que forma parte de la API de React Native. Se utiliza para obtener la densidad de píxeles de la pantalla del dispositivo, lo que permite adaptar las interfaces de usuario a diferentes resoluciones y tamaños de pantalla. Esto es útil para crear aplicaciones que se vean bien en dispositivos con diferentes densidades de píxeles (por ejemplo, en pantallas Retina y no Retina).

  PixelRatio

PixelRatio, no es un componente en React Native. Es un módulo o API que proporciona utilidades para manejar la resolución de pantalla y la densidad de píxeles.

🧱 Métodos más comunes de PixelRatio

PixelRatio proporciona métodos útiles para manejar la resolución de pantalla de manera eficiente.

get() - Obtener la densidad de píxeles de la pantalla

Este método devuelve la densidad de píxeles del dispositivo. Los valores típicos son:

  • 1 para dispositivos con baja densidad de píxeles (LDPI).
  • 2 para dispositivos con densidad media (MDPI).
  • 3 para dispositivos con alta densidad (HDPI o Retina).
  • 4 para dispositivos con densidad muy alta (como pantallas 4K).
jsx
import React from 'react';
import { Text, View, PixelRatio } from 'react-native';

const App = () => {
const pixelDensity = PixelRatio.get();

return (
  <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <Text>La densidad de píxeles es: {pixelDensity}</Text>
  </View>
);
};

export default App;

getFontScale() - Obtener la escala de fuente del dispositivo

Este método devuelve el valor de escala de la fuente del sistema operativo. Esto es útil para ajustar el tamaño de texto de acuerdo con las preferencias del usuario.

jsx
import React from 'react';
import { Text, View, PixelRatio } from 'react-native';

const App = () => {
const fontScale = PixelRatio.getFontScale();

return (
  <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <Text>La escala de fuente es: {fontScale}</Text>
  </View>
);
};

export default App;

getPixelSizeForLayoutSize() - Convertir un tamaño lógico en píxeles físicos

Este método convierte un tamaño lógico, como lo define la interfaz de usuario de la aplicación, en píxeles físicos para dispositivos con diferentes densidades de píxeles.

jsx
import React from 'react';
import { Text, View, PixelRatio } from 'react-native';

const App = () => {
const logicalSize = 20;
const physicalSize = PixelRatio.getPixelSizeForLayoutSize(logicalSize);

return (
  <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <Text>Tamaño físico para un tamaño lógico de {logicalSize}: {physicalSize} px</Text>
  </View>
);
};

export default App;

roundToNearestPixel() - Redondear el tamaño de píxeles a un valor cercano

Este método redondea un valor de píxel al valor más cercano para evitar problemas con la representación visual en pantallas de alta densidad.

jsx
import React from 'react';
import { Text, View, PixelRatio } from 'react-native';

const App = () => {
const roundedPixelSize = PixelRatio.roundToNearestPixel(10.7);

return (
  <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
    <Text>El valor redondeado es: {roundedPixelSize}</Text>
  </View>
);
};

export default App;
  Resumen

PixelRatio en React Native es muy útil para manejar y ajustar las interfaces de usuario a diferentes densidades de píxeles. Al utilizar los métodos de PixelRatio, como get(), getFontScale(), y getPixelSizeForLayoutSize(), puedes crear interfaces de usuario que se vean bien en una amplia gama de dispositivos, independientemente de su densidad de píxeles o escala de fuente.