基于HarmonyOS API 24 React Native跨平台鸿蒙开发实战系列:Image标签图片自适应显示(二),使用spectRatio控制组件的宽高比例
本文是基于HarmonyOS API 24的进行的React Native跨平台技术实战项目React Native 跨端鸿蒙开发行业简称 RNOHReact Native OpenHarmony是社区 华为共建的适配层方案把 Meta 的 React Native 框架完整移植到鸿蒙HarmonyOS NEXT / OpenHarmony让一套 React/JS/TS 代码同时运行在Android、iOS、鸿蒙手机 / 平板 / PC多端属于原生级跨端方案区别于 WebView 套壳网页方案。简单一句话前端工程师不用学 ArkTS用熟悉的 React 语法写业务底层自动映射成鸿蒙 ArkUI 原生控件打包成鸿蒙标准 hap 应用上架应用市场。它的核心定位可以概括为不改变 React/TypeScript 前端研发习惯复用现有 RN 业务代码资产依托鸿蒙系统底层接口做一层高性能中间适配层将 JSX 组件、JS 业务逻辑映射为鸿蒙原生 ArkUI 控件最终构建可在手机、平板、车机、智慧屏、PC 等全鸿蒙设备运行、支持上架华为应用市场的原生级应用。和 UniApp、WebView 套壳等网页类跨端方案有本质区别RNOH 不依赖浏览器内核渲染页面所有 UI 渲染、手势交互、视图层级全部交给鸿蒙系统原生图形引擎处理不存在网页性能瓶颈、样式兼容偏差等问题。兼容完整 React 生态、Hooks、JSX、RN 标准组件前端工程师无需学习 ArkTS、ArkUI 声明式语法仅需少量平台兼容代码即可完成多端适配底层打通鸿蒙 NAPI、ArkUI C 底层接口兼顾代码复用性与鸿蒙原生能力调用核心面向存量 RN App 快速新增鸿蒙渠道是前端团队切入鸿蒙生态最低成本的技术路线。在React Native鸿蒙开发中实现图片自适应确实与传统的定宽或定高方法有所不同。下面为您介绍几种有效的解决方案核心解决方案1. 使用 aspectRatio 属性推荐这是目前最稳定可靠的方法通过设置宽高比来实现自适应Image source{{uri:https://picsum.photos/400/600}}style{{width:100%,aspectRatio:1.5// 宽度:高度 1:1.5}}resizeModecontain/这种方法在平板、折叠屏等各种设备上都能正常显示避免了屏幕尺寸获取不准确的问题。2. Image组件基础用法React Native的Image组件支持多种图片加载方式‌加载网络图片‌Image source{{uri:https://example.com/image.jpg}}style{{width:100%,aspectRatio:1}}/‌加载本地图片‌jsImage source{require(./assets/image1.jpg)}style{{width:100%,aspectRatio:0.75}}/3. 处理鸿蒙平台的多分辨率适配在鸿蒙平台上设备不会像Android那样自动加载2x、3x图片需要手动处理// 根据设备像素比选择不同分辨率的图片 const pixelRatio PixelRatio.get(); let imageSource; if (pixelRatio 3) { imageSource require(./images/xxx3x.png); } else if (pixelRatio 2) { imageSource require(./images/xxx2x.png); } else { imageSource require(./images/xxx.png); } Image source{imageSource} style{{width: 100%, aspectRatio: 1}} /实用建议‌立即尝试‌在您当前项目的图片组件中添加 aspectRatio 属性结合 width: ‘100%’ 即可快速实现自适应效果。import React from react; import { View, Text, Dimensions, StyleSheet, Image } from react-native; //获取屏幕的宽高 const screenWidth Math.round( Dimensions.get(window).width); const screenHight Math.round( Dimensions.get(window).height); const AppStyles StyleSheet.create({ wrap: { width: 100%, height: screenHight, backgroundColor: #85BDFF }, title: { width: 100%, height: 72, fontFamily: OPPOSans, OPPOSans, fontWeight: normal, paddingTop: 50, fontSize: 36, color: #304057, lineHeight: 72, textAlign: center, fontStyle: normal }, banner: { paddingTop: 50, paddingRight: 32, paddingLeft: 32, }, bannerItem: { paddingTop: 10, display: flex, flexDirection:row, alignItems: center, justifyContent: center, width: 50%, } }) function App() { return ( View style{AppStyles.wrap} Text style{AppStyles.title}鸿蒙ReactNative系统/Text View style{AppStyles.banner} View style{{display:flex,flexDirection:row,justifyContent:space-between}} View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}实时业绩便捷查询/Text /View View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}订单状态轻松把控/Text /View /View View style{{display:flex,flexDirection:row,justifyContent:space-between}} View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}宣传数据全程管理/Text /View View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}海量素材一站转发/Text /View /View /View Image style{{width:289, aspectRatio: 0.6}} source{require(./images/login-bg.png)}/Image /View ); } export default App;可以看到在使用aspectRatio之后表示React Native中的aspectRatio属性用于控制组件的宽高比通过设置一个数字值如1表示正方形可自动计算未指定的维度宽度或高度从而实现自适应布局但是貌似会自动截取图片。接下来我们再次修改aspectRatio让图片居中到页面。核心功能定义宽高比设置aspectRatio: 1时组件宽度和高度相等设置aspectRatio: 2时宽度是高度的两倍 。自动计算未指定维度若仅指定宽度或高度另一维度会根据宽高比自动调整 。使用场景图片展示结合宽度或高度设置无需手动计算另一维度 。响应式布局确保组件在不同容器中保持比例避免变形 。注意事项与Flex布局的兼容性在Flex容器中使用时可能影响justifyContent等对齐属性需通过调整父容器或子组件样式解决 。优先级若同时设置宽度、高度和宽高比宽高比会覆盖其他尺寸约束 。安装DevEco Studio程序选择目标安装目录设置环境变量但是需要重启一下新建一个空白模板设置API为24的模板项目初始化项目自动下载相关依赖完整代码import React from react; import { View, Text, Dimensions, StyleSheet, Image } from react-native; //获取屏幕的宽高 const screenWidth Math.round( Dimensions.get(window).width); const screenHight Math.round( Dimensions.get(window).height); const AppStyles StyleSheet.create({ wrap: { width: 100%, height: screenHight, backgroundColor: #85BDFF }, title: { width: 100%, height: 72, fontFamily: OPPOSans, OPPOSans, fontWeight: normal, paddingTop: 50, fontSize: 36, color: #304057, lineHeight: 72, textAlign: center, fontStyle: normal }, banner: { paddingTop: 50, paddingRight: 32, paddingLeft: 32, }, bannerItem: { paddingTop: 10, display: flex, flexDirection:row, alignItems: center, justifyContent: center, width: 50%, } }) function App() { return ( View style{AppStyles.wrap} Text style{AppStyles.title}鸿蒙ReactNative系统/Text View style{AppStyles.banner} View style{{display:flex,flexDirection:row,justifyContent:space-between}} View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}实时业绩便捷查询/Text /View View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}订单状态轻松把控/Text /View /View View style{{display:flex,flexDirection:row,justifyContent:space-between}} View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}宣传数据全程管理/Text /View View style{AppStyles.bannerItem} Image style{{width:27,height:27}} source{require(./images/checked.png)}/Image Text style{{paddingLeft: 4}}海量素材一站转发/Text /View /View /View Image style{{width:289, aspectRatio: 0.6, display: flex, alignSelf: center}} source{require(./images/login-bg.png)}/Image /View ); } export default App;当只设置宽度时高度会根据比例自动计算反之亦然。这比传统的百分比 padding 技巧更简洁直观实用建议‌在开发图片展示组件时直接使用 aspectRatio 替代复杂的宽高计算能让你的布局代码更简洁且易于维护。

相关新闻

事件相关电位技术概述

事件相关电位技术概述

1.本书的概述、目的和观点本书的前半部分主要介绍必需的基本信息,第一章是针对ERP领域初学者的一个概述。第二章通过对ERPs的深入观察,探讨几乎每项ERP研究中都会遇到的一些问题。第三章概述了最为常见和有用的ERP成分。第四章介绍ERP实验的设计&#xf…

2026/7/27 8:28:56 阅读更多 →
基于HarmonyOS API 24 React Native跨平台鸿蒙开发实战系列:Image标签图片自适应显示(一)

基于HarmonyOS API 24 React Native跨平台鸿蒙开发实战系列:Image标签图片自适应显示(一)

本文是基于HarmonyOS API 24的进行的React Native跨平台技术实战项目React Native 跨端鸿蒙开发,行业简称 RNOH(React Native OpenHarmony),是社区 华为共建的适配层方案:把 Meta 的 React Native 框架完整移植到鸿蒙…

2026/7/27 8:28:56 阅读更多 →
Kali Linux 2026虚拟机部署指南:从安装到汉化完整方案

Kali Linux 2026虚拟机部署指南:从安装到汉化完整方案

这次我们来看一个2026年最新版的Kali Linux完整部署方案。对于网络安全学习、渗透测试和系统安全评估来说,Kali Linux是绕不开的工具集。但很多新手卡在第一步:如何快速、稳定地完成从下载、安装到激活、汉化的全过程?这篇文章直接给你一套可…

2026/7/27 8:28:56 阅读更多 →

最新新闻

AI智能体技术栈解析:Agent、推理引擎与大模型协同

AI智能体技术栈解析:Agent、推理引擎与大模型协同

1. 从零理解AI智能体技术栈:Agent、推理引擎与大模型的角色关系当我们在讨论AI智能体技术时,常常会听到三个核心组件:Agent(智能体)、推理引擎和大模型。这三者之间的关系,可以用一个生活中的场景来类比理解…

2026/7/27 8:40:02 阅读更多 →
在qemu中,安装bios模式arch linux

在qemu中,安装bios模式arch linux

第一阶段:宿主机准备(在 QEMU 所在的系统执行) 1. 创建虚拟硬盘 首先,我们需要为虚拟机创建一个虚拟磁盘文件(这里以 20G 为例,格式为 qcow2): qemu-img create -f qcow2 archlinux.…

2026/7/27 8:40:02 阅读更多 →
Linux运维从入门到精通

Linux运维从入门到精通

龟速更新ing!(虽然还有好多没更新)默认安装好了centos7如何实现Linux的远程连接?首先我要知道主机的IP地址,有了IP电脑才能知道要访问的对象ip -a #获取IP地址 #如果没有用可以使用ifconfig在自己主机上的IP地址一般使…

2026/7/27 8:40:02 阅读更多 →
TMS320C6421 DSP复位机制与时钟系统配置实战详解

TMS320C6421 DSP复位机制与时钟系统配置实战详解

1. 项目概述与核心价值 在嵌入式DSP系统开发中,尤其是像TMS320C6421这样功能复杂的定点数字信号处理器,最让人头疼的往往不是算法实现,而是系统上电和复位后那一瞬间的“黑盒”状态。你是否遇到过这样的场景:精心编写的代码&#…

2026/7/27 8:40:01 阅读更多 →
斯特林数C++实现:从数学原理到高精度计算与动态规划优化

斯特林数C++实现:从数学原理到高精度计算与动态规划优化

1. 项目概述:从数学理论到C实现 斯特林数,这个名字对于很多刚接触组合数学或者算法竞赛的朋友来说,可能既熟悉又陌生。熟悉是因为它在很多高级算法和数学问题中频频现身,比如划分问题、容斥原理、多项式转换;陌生则是因…

2026/7/27 8:40:01 阅读更多 →
AI降重工具评测与学术论文优化技巧

AI降重工具评测与学术论文优化技巧

1. AI降重工具的核心价值与学术应用场景论文降重是学术写作中绕不开的关键环节。去年帮导师审阅研究生论文时,我发现超过60%的修改意见都集中在重复率问题上。传统人工降重不仅耗时费力,还容易破坏原文的学术逻辑。现在AI工具已经能智能重组句式、替换学…

2026/7/27 8:39:01 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻