鸿蒙OSUniApp 开发支持图片和视频的多媒体展示组件#三方框架 #Uniapp
使用 UniApp 开发支持图片和视频的多媒体展示组件
前言
在现代移动应用中,图片和视频已成为内容展示的主流形式。一个优秀的多媒体展示组件不仅能提升用户体验,还能增强产品的互动性和视觉冲击力。随着鸿蒙(HarmonyOS)生态的不断壮大,开发者对多端适配和高性能渲染提出了更高要求。本文将以 UniApp 为例,详细讲解如何开发一个支持图片和视频的多媒体展示组件,并给出鸿蒙平台的适配建议。
一、需求与设计思路
1. 需求分析
- 支持图片和视频混合展示,自动识别类型
- 支持全屏预览图片、播放视频
- 支持滑动切换、缩略图导航
- 兼容鸿蒙平台,适配不同分辨率
- 组件化设计,便于复用和扩展
2. 设计思路
- 使用
swiper
组件实现滑动切换 - 通过
v-for
渲染多媒体列表,自动区分图片和视频 - 图片采用
image
组件,支持懒加载和预览 - 视频采用
video
组件,支持全屏播放 - 提供缩略图导航,提升交互体验
- 适配鸿蒙平台的多媒体能力和性能特性
二、核心代码实现
1. 组件结构
<template><view class="media-viewer"><swiperclass="media-swiper":indicator-dots="true":current="current"@change="onChange"><swiper-item v-for="(item, idx) in mediaList" :key="idx"><imagev-if="item.type === 'image'":src="item.url"class="media-img"mode="aspectFill":lazy-load="true"@click="previewImage(item.url)"/><videov-else-if="item.type === 'video'":src="item.url"class="media-video"controls:poster="item.poster || ''"@fullscreenchange="onFullScreen"/></swiper-item></swiper><view class="thumbs"><viewv-for="(item, idx) in mediaList":key="idx":class="['thumb', { active: idx === current }]"@click="goTo(idx)"><image v-if="item.type === 'image'" :src="item.url" class="thumb-img" mode="aspectFill" /><view v-else class="thumb-video"><image :src="item.poster || defaultPoster" class="thumb-img" mode="aspectFill" /><text class="play-icon">▶</text></view></view></view></view>
</template>
2. 脚本逻辑
<script>
export default {name: 'MediaViewer',props: {mediaList: { type: Array, required: true },defaultPoster: { type: String, default: '/static/video-poster.png' },},data() {return {current: 0,};},methods: {onChange(e) {this.current = e.detail.current;},goTo(idx) {this.current = idx;},previewImage(url) {const imgs = this.mediaList.filter(m => m.type === 'image').map(m => m.url);uni.previewImage({urls: imgs,current: url,});},onFullScreen(e) {// 可根据 e.detail.fullScreen 做自定义处理},},
};
</script>
3. 样式设计
<style scoped>
.media-viewer {width: 100vw;background: #000;padding-bottom: 24rpx;
}
.media-swiper {width: 100vw;height: 420rpx;background: #000;
}
.media-img, .media-video {width: 100vw;height: 420rpx;object-fit: cover;border-radius: 12rpx;background: #222;
}
.thumbs {display: flex;justify-content: center;margin-top: 18rpx;gap: 16rpx;
}
.thumb {width: 88rpx;height: 88rpx;border-radius: 10rpx;overflow: hidden;border: 2rpx solid transparent;position: relative;background: #222;cursor: pointer;
}
.thumb.active {border-color: #007aff;
}
.thumb-img {width: 100%;height: 100%;object-fit: cover;
}
.thumb-video {position: relative;width: 100%;height: 100%;
}
.play-icon {position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);color: #fff;font-size: 36rpx;text-shadow: 0 2rpx 8rpx rgba(0,0,0,0.18);
}
</style>
三、父页面集成与使用示例
<template><media-viewer :mediaList="mediaList" />
</template><script>
import MediaViewer from '@/components/MediaViewer.vue';
export default {components: { MediaViewer },data() {return {mediaList: [{ type: 'image', url: 'https://cdn.example.com/1.jpg' },{ type: 'video', url: 'https://cdn.example.com/2.mp4', poster: 'https://cdn.example.com/2.jpg' },{ type: 'image', url: 'https://cdn.example.com/3.jpg' },],};},
};
</script>
四、鸿蒙平台适配与优化建议
- 分辨率适配:全程使用
rpx
单位,保证鸿蒙不同设备下的显示一致。 - 性能优化:图片建议开启懒加载,视频建议设置 poster,提升鸿蒙设备流畅度。
- 多媒体兼容:鸿蒙平台对 video、image 支持良好,建议使用标准组件,避免自定义播放器兼容性问题。
- 安全区域适配:如有底部导航,注意
env(safe-area-inset-bottom)
。 - 交互动画:鸿蒙设备对交互反馈要求高,建议切换、预览等操作增加动效。
五、实际应用案例
- 内容社区App:帖子支持图片、视频混合展示,提升互动性。
- 电商App:商品详情页多媒体展示,支持滑动切换、全屏预览。
- 教育App:课程资料支持图片、视频混合浏览。
六、总结与展望
多媒体展示组件是提升移动端内容表现力的重要工具。通过 UniApp 的组件化和跨平台特性,我们可以高效实现兼容鸿蒙的高性能多媒体展示。未来还可结合弹幕、滤镜、编辑等功能进一步丰富场景。希望本文的讲解和代码示例能为你的项目带来启发,欢迎留言交流更多鸿蒙适配经验!
相关文章:
鸿蒙OSUniApp 开发支持图片和视频的多媒体展示组件#三方框架 #Uniapp
使用 UniApp 开发支持图片和视频的多媒体展示组件 前言 在现代移动应用中,图片和视频已成为内容展示的主流形式。一个优秀的多媒体展示组件不仅能提升用户体验,还能增强产品的互动性和视觉冲击力。随着鸿蒙(HarmonyOS)生态的不断…...

VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理
一、软件介绍 文末提供程序和源码下载 VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理 二、什么是 VoltAgent? AI 代理框架提供了构建由自主代理提供支持的应用程序所需的基础结构和工具。这些代理通常由大型语言模型 (&am…...
数据中台(大数据平台)之数据仓库建设
数据中台作为企业数据管理的核心枢纽,应支持并促进企业级数据仓库的建设,确保数据的有效整合、治理和高效应用。在建设数据仓库的过程中,设计和规划显得尤为重要,需要深入理解业务需求,制定合理的技术架构,…...
如何使用DeepSpeed来训练大模型
🔥 DeepSpeed是什么? DeepSpeed 是微软开源的一个 分布式训练加速库。 能帮助我们: 高效训练大模型(百亿、千亿参数规模) 节省显存、加速训练 支持 ZeRO 优化器、Offload、混合精度(FP16/BF16࿰…...
道可云人工智能每日资讯|《北京市人工智能赋能新型工业化行动方案(2025年)》发布
道可云人工智能&元宇宙每日简报(2025年5月28日)讯,今日人工智能&元宇宙新鲜事有: 河南:打造“AI智慧文旅”沉浸式体验新空间,推动5GAR/VR在文旅消费场景应用 近日,河南省人民政府办公…...

Unity 中实现首尾无限循环的 ListView
之前已经实现过: Unity 中实现可复用的 ListView-CSDN博客文章浏览阅读5.6k次,点赞2次,收藏27次。源码已放入我的 github,地址:Unity-ListView前言实现一个列表组件,表现方面最核心的部分就是重写布局&…...

mongodb集群之副本集
目录 1. 适用场景备份高可用性 2. 集群搭建如何搭建资源规划根据资源完成各节点conf文件的配置启动各个mongodb节点初始化集群信息 搭建实例Linux搭建实例(待定)Windows搭建实例 3. 副本集基础操作4.集群平滑升级 1. 适用场景 备份 1)服务器…...

基于微服务架构的社交学习平台WEB系统的设计与实现
设计(论文)题目 基于微服务架构的社交学习平台WEB系统的设计与实现 摘 要 社交学习平台 web 系统要为学习者打造一个开放、互动且社交性强的在线教育环境,打算采用微服务架构来设计并实现一个社交学习平台 web 系统,以此适应学…...
window10下docker方式安装dify步骤
window10下docker方式安装dify步骤(稳定后考虑部署至linux中) 教程:https://blog.csdn.net/qq_49035156/article/details/143264534 教程:https://blog.csdn.net/m0_51171437/article/details/146069890 0、资源要求 ---windows…...
Spark SQL进阶:解锁大数据处理的新姿势
目录 一、Spark SQL,为何进阶? 二、进阶特性深剖析 2.1 窗口函数:数据洞察的新视角 2.2 高级聚合:挖掘数据深度价值 2.3 自定义函数(UDF 和 UDTF):拓展功能边界 三、性能优化实战 3.1 数…...

放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!
端午节的到来和毕业季的临近,让很多人开始计划出游或长途旅行。而在旅途中,一款好用耐用的充电宝可以省不少事。今天,我们就来聊聊放假带出门的充电宝买哪种好用耐用,看看为什么倍思超能充35W更适合带出门~ 一、为什么需要一款好用…...
云原生DMZ架构实战:基于AWS CloudFormation的安全隔离区设计
在云时代,传统的DMZ(隔离区)概念已经演变为更加灵活和动态的架构。本文通过解析一个实际的AWS CloudFormation模板,展示如何在云原生环境中构建现代化的DMZ安全架构。 1. 云原生DMZ的核心理念 传统DMZ是网络中的"缓冲区",位于企业内网和外部网络之间。而在云环境…...
小工具合集
Freetool.tools - Overview Freetool.tools is a 100% free online utility website offering a wide range of handy tools for everyday tasks. It focuses on simplicity, instant access, and zero cost—no signup, ads, or paywalls. ✅ Key Features & Strengths …...

AI智能体策略FunctionCalling和ReAct有什么区别?
Dify 内置了两种 Agent 策略:Function Calling 和 ReAct,但二者有什么区别呢?在使用时又该如何选择呢?接下来我们一起来看。 1.Function Calling Function Call 会通过将用户指令映射到预定义函数或工具,LLM 先识别用…...

改进自己的图片 app
1. 起因, 目的: 前面我写过一个图片 app , 最新做了些改动。 把原来的一列,改为3列, 继续使用瀑布流手机上使用,更流畅,横屏显示为2列。 2. 先看效果 3. 过程: 过程太细碎了,这里只是做一下…...
docker不用dockerfile
好的!既然你不想使用 Dockerfile,我们就完全不写 Dockerfile,改用你 Leader 提到的思路: 用基础镜像启动一个容器 → 手动在容器里安装依赖和复制项目 → 保存为新镜像 这个方式更直观,就像“你进入容器自己配置环境&a…...

Uniapp+UView+Uni-star打包小程序极简方案
一、减少主包体积 主包污染源(全局文件依赖)劲量独立导入 componentsstaticmain.jsApp.vueuni.css 分包配置缺陷,未配置manifest.json中mp-weixin节点 "usingComponents" : true,"lazyCodeLoading" : "requiredC…...
深度学习篇---Pytorch框架下OC-SORT实现
下面将详细介绍如何基于 PyTorch 框架实现 OC-SORT(Observation-Centric SORT)算法。OC-SORT 是一种高性能的多目标跟踪算法,特别适用于复杂场景下的目标跟踪。我们将从算法原理到具体实现逐步展开。 1. 算法概述与核心原理 OC-SORT 在传统…...
STM32 HAL库SPI读写W25Q128(软件模拟+硬件spi)
1. 引言 在嵌入式系统开发中,SPI(Serial Peripheral Interface)总线是一种常用的串行通信协议,用于在微控制器和外部设备之间进行高速数据传输。W25Q128 是一款常见的 SPI Flash 芯片,具有 128Mbit(16MB&a…...

算法题(159):快速幂
审题: 本题需要我们计算出(a^b)%c的值,并按照规定格式输出 思路: 方法一:暴力解法 我们直接循环b次计算出a^b,然后再取余c,从而得出最终结果 时间上:会进行2^31次,他的数量级非常大,…...

【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布
在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard,特别推出嵌入式人工智…...

基于javaweb的SpringBoot体检管理系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Mac Python 安装依赖出错 error: externally-managed-environment
Mac Python 使用 ip3 install -r requirements.txt 出错 This environment is externally managed ╰─> To install Python packages system-wide, try brew installxyz, where xyz is the package you are trying toinstall.If you wish to install a Python library th…...
Docker Desktop for Windows 系统设置说明文档
1. 文档概述 本文档旨在详细说明 Docker Desktop for Windows 应用程序中“设置 (Settings)”界面下的所有可配置选项及其子选项。对于每个配置项,我们将提供其功能描述、推荐配置(如适用)以及相关注意事项,帮助用户更好地理解和…...
C++高级编程深度指南:内存管理、安全函数、递归、错误处理、命令行参数解析、可变参数应用与未定义行为规避
C高级编程深度指南:内存管理、安全函数、递归、错误处理、命令行参数解析、可变参数应用与未定义行为规避 1. 可变参数1.1 可变参数的定义与原理1.2 使用可变参数的场景1.3 可变参数的实现方式1.3.1 省略号方式1.3.2 模板参数包方式 2.2 动态内存分配函数2.3 内存泄…...
【下拉选项数据管理优化实践:从硬编码到高扩展性架构】
下拉选项数据管理优化实践:从硬编码到高扩展性架构 背景 在大型前端项目中,下拉选项数据管理是一个常见但容易被忽视的痛点。我们的项目中存在多种格式的选项标识符,如代码格式(OPTION_A1)和数字格式(100…...

IPD的基础理论与框架——(四)矩阵型组织:打破部门壁垒,构建高效协同的底层
在传统的组织架构中,企业多采用直线职能制,就像一座等级森严的金字塔,信息沿着垂直的层级传递,员工被划分到各个职能部门。这种架构职责清晰、分工明确,在稳定的市场环境中,能让企业高效运作,发…...
深度学习篇---OC-SORT实际应用效果
OC-SORT 算法在实际应用中的效果可从准确性、鲁棒性、效率三个核心维度评估,其表现与传统多目标跟踪算法(如 SORT、DeepSORT)相比有显著提升,尤其在复杂场景中优势突出。以下是具体分析: 一、准确性:目标关联更可靠 1. 遮挡场景下的 ID 保持能力 优势表现: 传统算法(…...
讲述我的plc自学之路 第十一章
《凡人歌》,道出了我们每个人都是一个凡人,追逐功名利禄是每个人的特性,但也往往被世俗所伤。lora和我听着歌曲的同时,我能感觉到和她内心的那种共鸣和对世俗的妥协。 我以前是不信命的,但是经历过这么多社会的毒打&am…...
OpenLayers 图形绘制
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 图形绘制功能是指在地图容器中绘制点、线、面、圆、矩形等图形。图形绘制功能在WebGIS中具有重要作用,可以辅助查询、编辑、分析功能。本节主…...