screen.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {
  2. PixelRatio,
  3. Dimensions
  4. } from 'react-native';
  5. export let screenW = Dimensions.get('window').width;
  6. export let screenH = Dimensions.get('window').height;
  7. const fontScale = PixelRatio.getFontScale();
  8. export let pixelRatio = PixelRatio.get();
  9. //像素密度
  10. export const DEFAULT_DENSITY = 2;
  11. //px转换成dp
  12. //以iphone6为基准,如果以其他尺寸为基准的话,请修改下面的defaultWidth和defaultHeight为对应尺寸即可. 以下为1倍图时
  13. const defaultWidth = 375;
  14. const defaultHeight = 667;
  15. const w2 = defaultWidth / DEFAULT_DENSITY;
  16. //px转换成dp
  17. const h2 = defaultHeight / DEFAULT_DENSITY;
  18. //缩放比例
  19. const _scaleWidth = screenW / defaultWidth;
  20. const _scaleHeight = screenH / defaultHeight;
  21. // iPhoneX
  22. const X_WIDTH = 375;
  23. const X_HEIGHT = 812;
  24. /**
  25. * 屏幕适配,缩放size , 默认根据宽度适配,纵向也可以使用此方法
  26. * 横向的尺寸直接使用此方法
  27. * 如:width ,paddingHorizontal ,paddingLeft ,paddingRight ,marginHorizontal ,marginLeft ,marginRight
  28. * @param size 设计图的尺寸
  29. * @returns {number}
  30. */
  31. function scaleSize(size: Number) {
  32. return size * _scaleWidth;
  33. }
  34. /**
  35. * 屏幕适配 , 纵向的尺寸使用此方法应该会更趋近于设计稿
  36. * 如:height ,paddingVertical ,paddingTop ,paddingBottom ,marginVertical ,marginTop ,marginBottom
  37. * @param size 设计图的尺寸
  38. * @returns {number}
  39. */
  40. function scaleHeight(size: Number) {
  41. return size * _scaleHeight;
  42. }
  43. export default {
  44. scaleSize,
  45. scaleHeight,
  46. }