RN:页面大小自适应(布局)

本文介绍了如何在ReactNative应用中使用DimensionsAPI获取设备屏幕尺寸,计算与设计图的适应比例,以实现自适应布局。作者提供了示例代码,展示了如何动态调整UI元素的宽度和高度以适应不同设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入:Dimensions

import { Dimensions } from 'react-native';

原理

1.获取使用者设备的宽高。

2.确定设计图的宽高。

3.计算出比例:设备的宽高/设计图的宽高 == 比例 ,假设获取到的设备的宽为400,而我们设计图为375那这个比例就是400/375 = 1.06666666...

示例

import React, { useEffect } from 'react';

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

function ChangeWater() {
    useEffect(() => {
      //一些只需要发起一次的请求...
    }, [])
   
      //逻辑代码...
    

    return (
        <View style={styles.box}>
          <View style={styles.top}></View>
          <View>
              <Text>2023/09/13</Text>
          </View>
           {/* 其他的页面代码 */}
        </View>
    );
}
//获取手机页面的宽高
const { width, height } = Dimensions.get('window');

//设定ui设计的宽高
const widthPx = 390;
const heightPx = 844;

const w = (value) => {
    return (value * width) / widthPx
}
const h = (value) => {
    return (value * height) / heightPx
}
const styles = StyleSheet.create({
    box: {
        paddingTop: h(96),
        width: w(390),
        height: h(844)
    },
    top:{
       padding: w(10),
       marginLeft: w(20),  
       marginTop: h(15),
    }
})
export default ChangeWater;

 小知识

在算法(value * width) / widthPx中写法是可以多样性的,没有规定必须是那一种写法,就比如10*2/2 == 10, 10/2*2 == 10 ,2/2*10 == 10 所以算法怎么写不重要,重要的是最后的答案是自己需要的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值