Số trong style: { width: 100 } không phải physical pixel — đó là DIP (density-independent pixel), tương tự dp Android hay pt iOS. RN tự nhân với PixelRatio.get() để ra physical pixel khi render.
Ví dụ trên iPhone 14 (3x density), width: 100 thật sự là 300 physical pixel; trên màn 1x là 100. Mục đích: cùng một số → kích thước vật lý ngang nhau giữa các màn hình mật độ khác nhau, để UI không bị tí hon trên màn 4K hay khổng lồ trên màn cũ.
Thông tin liên quan:
- PixelRatio.get() trả 1, 1.5, 2, 2.5, 3, 3.5, 4 tùy device.
- PixelRatio.getPixelSizeForLayoutSize(100) chuyển DIP → physical pixel (cần khi gọi native API yêu cầu pixel thật, vd Canvas).
- StyleSheet.hairlineWidth là 1 physical pixel — dùng cho border mảnh (borderBottomWidth: StyleSheet.hairlineWidth).
- Image asset gắn @2x/@3x để Metro pick đúng độ phân giải theo density.