当前位置: 首页 > article >正文

react native 屏幕适配方案,设计图750px

宽度适配

  • 通过 Dimensions 获取屏幕的宽度,使用一个简单的比例来调整你的组件宽度。

字体大小适配

  • 根据屏幕宽度或高度调整字体大小,确保字体在不同设备上显示一致。

步骤说明

  • 获取屏幕宽度:使用 Dimensions API 获取屏幕宽度,通常我们根据设计稿的宽度(例如 750px)来计算比例,进行宽度和字体的缩放
  • 使用比例缩放:根据设备的屏幕宽度与设计稿宽度的比例来动态计算字体和宽度。

示例代码

import React from 'react';
import { Text, View, StyleSheet, Dimensions } from 'react-native';

// 获取屏幕宽度
const { width } = Dimensions.get('window');

// 设计稿宽度(750px)
const guidelineBaseWidth = 750;

// 计算比例
const scale = width / guidelineBaseWidth;

// 简单的缩放函数
const scaleSize = (size) => size * scale;  // 用于宽度
const scaleFontSize = (size) => size * scale;  // 用于字体大小

const App = () => {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>适配后的字体大小</Text>
      <View style={styles.box}></View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  text: {
    fontSize: scaleFontSize(30),  // 设计稿中的字体大小为30px
  },
  box: {
    width: scaleSize(300),  // 设计稿中的宽度为300px
    height: scaleSize(50),   // 设计稿中的高度为50px
    backgroundColor: 'skyblue',
  },
});

export default App;

方案二:使用 react-native-size-matters

import React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import { scale, moderateScale } from 'react-native-size-matters';

const App = () => {
  return (
    <View style={styles.container}>
      <Text style={styles.text}>适配后的字体大小</Text>
      <View style={styles.box}></View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
  text: {
    fontSize: scale(30),  // 字体大小根据屏幕宽度自动调整
  },
  box: {
    width: scale(300),  // 宽度根据屏幕宽度自动调整
    height: moderateScale(50),  // 高度根据屏幕宽度适中调整
    backgroundColor: 'skyblue',
  },
});

export default App;

方案解释

  • Dimensions.get(‘window’):用于获取当前设备的屏幕尺寸,返回屏幕宽度 (width) 和高度 (height)
  • scale:是屏幕宽度和设计稿宽度(例如 750px)的比例,通过这个比例来调整 UI 元素的尺寸。
  • scaleSize(size):将设计稿中的尺寸按比例进行缩放
  • scaleFontSize(size):将设计稿中的字体大小按比例进行缩放
  • react-native-size-matters:提供了 scale() 和 moderateScale() 等方法来帮助你做适配

为什么这样做?

  • 宽度适配:通过获取屏幕的实际宽度与设计稿宽度的比例,动态调整各个组件的宽度,从而确保应用在不同设备上显示一致
  • 字体大小适配:字体的大小也根据设备的屏幕宽度进行适配,避免文字在小屏幕上过大或在大屏幕上过小

http://www.kler.cn/a/466106.html

相关文章:

  • 【FlutterDart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100)
  • 计算机网络常见面试题及解答
  • 【问题记录】npm create vue@latest报错
  • 解决Linux切换用户后的命令提示符为-bashxx$的问题
  • 《learn_the_architecture_-_aarch64_exception_model》学习笔记
  • node.js:多线程 简单示例
  • MagicMirror 1.0.0 | 基于AI的面部替换、发型和服装搭配应用,无需GPU支持
  • C语言指针-冒泡排序之旅
  • vue cli更新遇到的问题(vue -V查询版本号不变的问题)
  • Appium 2.0:移动自动化测试的革新之旅
  • OkHttp接口自动化测试
  • 比Qt更适合小公司的C++界面开发框架wxWidgets
  • Large-Vision-Language-Models-LVLMs--info:deepseek-vl模型
  • K8s集群平滑升级(Smooth Upgrade of K8S Cluster)
  • Geoserver修行记-后端调用WMS/WMTS服务无找不到图层Could not find layer
  • 【每日学点鸿蒙知识】自定义键盘光标、Cavas绘制、XComponent触发键盘抬起等
  • 三维扫描技术如何让历史文物‘活’起来
  • 如何使用axios设置响应拦截器和请求拦截器
  • Web 开发入门:从前端到后端的全栈开发探索
  • Kafka【基础 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
  • 高级java每日一道面试题-2025年01月03日-并发篇-什么是Callable和Future?
  • docker 安装influxdb
  • Docker Compose 构建 EMQX 集群 实现mqqt 和websocket
  • 8、RAG论文笔记(Retrieval-Augmented Generation检索增强生成)
  • kubernetes学习-kubectl命令、探针(二)
  • 我的JAVA-Web进阶--Maven