开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 745|回复: 56
打印 上一主题 下一主题
收起左侧

[易源码分享] [不懂前端也能用] WebView2高颜值应用商店/下载器UI界面

[复制链接]
跳转到指定楼层
楼主
发表于 昨天 13:49 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   四川省绵阳市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 kfanghong 于 2026-2-6 14:31 编辑

【开源分享】高颜值应用商店/下载器UI界面 —— 易语言+WebView2
不懂前端也能用 | 纯中文指令控制 | 复制粘贴就能跑




先说最重要的事:你完全不需要懂HTML、CSS、JavaScript。这个界面就是一个单独的HTML文件,你只需要用WebView2组件加载它,然后通过发送中文文本消息就能控制界面上的一切。比如你想加一个软件卡片,就发一句 插入普通卡片:xxx&&&xxx ,界面就自动渲染出来了。





整体效果预览




















功能清单

■ 界面框架

  • 8方向边缘拉伸:窗口四边和四角都有隐藏的拉伸热区,鼠标靠近自动变成对应的拉伸光标,按下就发消息给易语言处理调整窗口大小
  • 标题栏拖拽移动:标签栏空白区域可以拖拽移动窗口,按钮等可交互区域自动排除
  • 窗口控制按钮:右上角最小化、最大化、关闭按钮,点击发送对应消息
  • 桌面应用化处理:禁用了右键菜单(输入框除外)、禁用了文本选择、禁用了图片拖拽,嵌入后和原生桌面窗口看起来没区别


■ 多标签页系统

  • 浏览器风格标签栏:和Chrome标签页类似的设计,支持动态创建和关闭
  • 内置页面:首页(应用广场)、下载管理、我的应用,都以标签页形式存在
  • 左侧Logo:支持通过消息动态更换,点击随时回到首页


■ 应用展示 — 三种卡片样式

普通卡片:最常用的,上面图标、中间标题和描述、底部按钮,适合展示一般的软件工具。

大图卡片:全屏背景大图+底部文字叠加,适合游戏或需要视觉冲击力的内容。底部有渐变遮罩确保文字可读。

图文混合卡片:左边是大图、右边是图标+标题+描述+按钮的水平布局,适合编辑推荐或专题内容。在网格中自动占据两列宽度。

三种卡片可以混合放在同一个分组里,网格布局会自动适配,不用你操心排版。


■ 轮播Banner

  • 首页顶部全宽Banner区域,支持两种模式:
      ● 自定义Banner:从图标和应用信息自动生成,左侧渐变背景+右侧应用图标水印
      ● 图片Banner:直接用一张大图作为背景
  • 支持鼠标滚轮切换、左右箭头切换、底部指示点切换
  • 自动轮播,鼠标悬停时暂停
  • 插入卡片时在参数里标记 真[标签文字] 就自动加入Banner,不用单独管理


■ 下载管理(重点打磨了动效)

这块花了比较多心思做动效:

下载触发动画:用户点击卡片上的"获取"按钮后——
1. 卡片先灵动缩小(带微弹跳和轻微旋转,不是生硬的缩放)
2. 缩小到一定程度后生成一个飞行元素,沿贝塞尔曲线飞向标签栏的"下载管理"标签页
3. 飞行过程中元素不断缩小并旋转,快到终点时渐隐消失
4. 卡片弹性回弹恢复原状(有弹簧过冲效果)
5. 卡片上的按钮变成进度条状态显示"等待中"
6. 下载管理标签上出现红色数字角标

从Banner点击下载也有类似动画,Banner会先有一个整体缩小打包的效果,然后飞行元素从Banner中心飞出。

下载进度展示
  • 下载列表中每个项目有独立的进度条、速度显示、百分比
  • 卡片上的按钮也同步显示进度,已填充部分用绿色渐变+流光效果,文字颜色随填充自动从黑变白
  • 下载完成后卡片按钮自动变成绿色的"启动"按钮


删除下载项动画:点关闭按钮后,下载项向右滑出+渐隐,然后高度平滑折叠收起,一气呵成不卡顿(全程GPU加速,用的transform和opacity)。

多任务并行:每个下载任务有唯一标识(1-100的不重复数字),多个任务同时下载时进度互不影响,删除任务后标识会回收复用。


■ 卡密验证系统

部分应用可以设置成需要卡密才能启动
  • 卡片左上角会显示一个精致的琥珀金角标(扇形,带钥匙图标和内发光质感),一眼就能看出这个应用需要卡密
  • 点击启动时不会直接发消息,而是弹出卡密验证弹窗
  • 弹窗设计:顶部有琥珀金装饰条、左侧显示应用图标、输入框内嵌钥匙图标、等宽字体显示卡密
  • 输入卡密点击"验证启动"后显示等待状态(带旋转Loading),等待易语言端返回验证结果
  • 验证成功:绿色提示,1.2秒后自动关闭弹窗
  • 验证失败:红色提示显示失败原因(比如"卡密已过期"),可以重新输入
  • 支持Enter键快捷提交


■ 提示框

  • 支持通过消息弹出提示框,带半透明遮罩,用户点击"确定"关闭


■ 主题切换

不是简单地换个背景色,而是有圆形扩散过渡动画
  • 从主题切换按钮的位置开始,新主题以圆形向四周扩散
  • 扩散过程中你能同时看到半边深色半边浅色的效果(基于View Transitions API实现)
  • 所有颜色都用CSS变量管理,深浅两套色板在 :root 和 [data-theme="dark"] 里定义


■ 搜索功能

  • 点击搜索框弹出搜索覆盖层,实时搜索已有的所有卡片
  • 搜索结果显示图标、名称、描述,鼠标悬停有滑入箭头动效
  • 点击搜索结果自动跳转回首页、滚动到对应卡片位置、短暂高亮闪烁该卡片
  • 搜索历史:以标签形式保存最近10条搜索记录,存在LocalStorage里关闭重开还在,每条可以单独删除或一键清空


■ 我的应用

  • 顶部工具栏有"我的应用"入口
  • 自动收集所有已下载(下载完成)的应用,以卡片形式展示
  • 需要卡密的应用也会显示卡密角标





一些设计细节

说几个可能不容易注意到的小地方:

1. 卡片hover效果:鼠标悬停时卡片会微微上浮并加深阴影,离开时平滑回落,有"触碰反馈"的感觉
2. Banner背景色提取:自定义Banner会用Canvas从应用图标中提取主色调,自动生成和谐的渐变背景,每个Banner颜色都不一样
3. Banner水印:右侧有半透明的应用名文字和大图标作为水印装饰,视觉上不会太空
4. 下载角标:下载管理按钮上的红色角标,有新任务时才显示,为0时自动隐藏
5. 进度条流光:下载中的进度条填充部分有一个白色高光从左到右不断扫过的shimmer效果
6. 滚动条美化:内容区的滚动条是自定义的细条样式,悬停才明显,不抢视觉
```````




不懂前端怎么用?(手把手教程)

第一步:把HTML文件放到你的项目目录

就一个文件 download_ui.html,放哪都行,等下记住路径就好。

第二步:用WebView2加载它

  1. WebView2.导航 ("你的路径\download_ui.html")
复制代码


第三步:等待界面就绪

界面加载完成后会主动给你发一条消息:页面已加载完成

在WebView2的消息接收事件里判断:


  1. .如果 (消息 = "页面已加载完成")
  2.     ' 界面准备好了,开始添加内容
  3.     初始化商店内容 ()
  4. .如果结束
复制代码


第四步:更新Logo(可选)

  1. WebView2.发送消息 ("更新LOGO:logo.png")
复制代码


支持相对路径和网络链接。

第五步:添加分组和卡片

  1. ' ① 先创建分组(相当于一个分类)
  2. WebView2.发送消息 ("创建商店分组:热门推荐")
  3. WebView2.发送消息 ("创建商店分组:实用工具")

  4. ' ② 往分组里插入卡片
  5. ' 参数用 &&& 隔开,依次是:分组名、图标地址、标题、描述、下载地址、是否进Banner、是否已下载、是否需要卡密

  6. ' 普通卡片
  7. WebView2.发送消息 ("插入普通卡片:热门推荐&&&https://图标地址.png&&&微信&&&国民社交软件&&&https://下载地址/wechat.exe&&&假&&&假&&&假")

  8. ' 想让它出现在Banner里?第6个参数改成 真[标签文字]
  9. WebView2.发送消息 ("插入普通卡片:热门推荐&&&https://图标地址.png&&&QQ&&&年轻人的社交&&&https://下载地址/qq.exe&&&真[社交必备]&&&假&&&假")

  10. ' 已经下载过的?第7个参数改成 真,卡片直接显示"启动"按钮
  11. WebView2.发送消息 ("插入普通卡片:实用工具&&&https://图标地址.png&&&记事本&&&轻量文本编辑&&&C:\notepad.exe&&&假&&&真&&&假")

  12. ' 需要卡密的?最后一个参数改成 真,卡片有角标,启动弹验证框
  13. WebView2.发送消息 ("插入普通卡片:实用工具&&&https://图标地址.png&&&XX加速器&&&游戏网络加速&&&https://下载地址/xx.exe&&&假&&&假&&&真")

  14. ' 大图卡片(参数一样,只是图标换成大图地址)
  15. WebView2.发送消息 ("插入大图卡片:热门推荐&&&https://游戏封面大图.jpg&&&艾尔登法环&&&拿起你的剑&&&https://下载地址/elden.exe&&&真[史诗巨作]&&&假&&&假")

  16. ' 图文混合卡片(多一个图标参数,在大图和标题之间)
  17. WebView2.发送消息 ("插入图文混合卡片:热门推荐&&&https://左侧大图.jpg&&&https://小图标.png&&&Photoshop&&&专业图像处理&&&https://下载地址/ps.exe&&&假&&&假&&&假")
复制代码


第六步:处理用户操作

用户在界面上的所有操作都会通过消息通知你:

  1. .如果 (消息.取文本左边 (5) = "开始下载:")
  2.     ' 解析出应用名、下载地址、唯一标识
  3.     ' 比如消息是:"开始下载:微信-下载地址:https://xxx-唯一标识:42"
  4.     ' 在这里启动你的下载线程

  5. .如果 (消息.取文本左边 (5) = "停止下载:")
  6.     ' 消息是 "停止下载:42",42就是唯一标识
  7.     ' 在这里停止对应的下载线程

  8. .如果 (消息.取文本左边 (5) = "启动应用:")
  9.     ' 消息是 "启动应用:微信&&&C:\Downloads\WeChat.exe"
  10.     ' 直接运行这个路径就行
  11.     ' 如果有卡密:"启动应用:XX加速器&&&C:\xx.exe&&&验证卡密:ABCD-1234"
  12.     ' 先去你的服务器验证卡密,然后回传结果

  13. .如果 (消息 = "最小化窗口")
  14.     窗口最小化 ()
  15. .如果 (消息 = "最大化窗口")
  16.     窗口最大化 ()
  17. .如果 (消息 = "关闭窗口")
  18.     结束 ()
复制代码


第七步:回传下载进度

你的下载线程在跑的过程中,用定时器把进度发回给界面:

  1. ' 下载进度(进度是0-100的数字,不要带%号)
  2. WebView2.发送消息 ("下载回调:微信&&&35&&&2.4MB/s")
  3. WebView2.发送消息 ("下载回调:微信&&&78&&&5.1MB/s")

  4. ' 下载完成(告诉界面文件存到哪了,之后启动就用这个路径)
  5. WebView2.发送消息 ("下载完成:微信&&&C:\Downloads\WeChat.exe")
复制代码


注意:下载进度消息只是更新显示,不会触发"完成"。必须发"下载完成:"消息才会让卡片变成启动按钮。

第八步:处理卡密验证(如果你用了卡密功能)

  1. ' 收到用户输入的卡密后,去你的服务器验证
  2. ' 验证通过:
  3. WebView2.发送消息 ("卡密验证:XX加速器&&&成功")

  4. ' 验证失败(第二个参数写失败原因,界面会直接显示):
  5. WebView2.发送消息 ("卡密验证:XX加速器&&&卡密已过期,请重新购买")
复制代码


第九步:弹出提示框(可选)

  1. WebView2.发送消息 ("弹出提示框:欢迎使用本软件!")
复制代码





完整消息格式速查

你发给界面的(易语言 → 界面)

消息格式说明
创建商店分组:分组名称在首页创建一个分类
更新LOGO:图片路径或链接更新左上角Logo图标
插入普通卡片:分组&&&图标&&&标题&&&描述&&&下载地址&&&Banner标志&&&已下载&&&需要卡密小图标卡片
插入大图卡片:分组&&&大图&&&标题&&&描述&&&下载地址&&&Banner标志&&&已下载&&&需要卡密大背景图卡片
插入图文混合卡片:分组&&&大图&&&图标&&&标题&&&描述&&&下载地址&&&Banner标志&&&已下载&&&需要卡密左图右文卡片
下载回调:应用名&&&进度数字&&&速度文本实时更新下载进度
下载完成:应用名&&&本地文件路径标记下载完成
卡密验证:应用名&&&成功卡密验证通过
卡密验证:应用名&&&失败原因文本卡密验证失败
弹出提示框:提示内容弹出提示框


参数说明
● Banner标志: = 不加入Banner,真[显示的标签] = 加入Banner轮播
● 已下载: = 显示启动按钮, = 显示获取按钮
● 需要卡密: = 启动时弹卡密验证框, = 直接启动


界面发给你的(界面 → 易语言)

消息格式说明
页面已加载完成界面准备就绪,可以开始发数据了
开始下载:名称-下载地址:地址-唯一标识:数字用户点了下载按钮
停止下载:数字用户取消了某个下载任务
启动应用:名称&&&本地路径用户点了启动(不需要卡密)
启动应用:名称&&&本地路径&&&验证卡密:卡密内容用户点了启动(需要卡密)
最小化窗口 / 最大化窗口 / 关闭窗口窗口控制
调整尺寸-1 到 调整尺寸-8用户拖拽了窗口边缘(1=左上角,顺时针到8=左边)





常见问题

Q:首次打开很慢?
A:图标库Remix Icon是CDN引入的,第一次需要联网加载。如果你想离线使用,可以把图标字体文件下载下来改成本地引用。

Q:图标地址填什么?
A:可以填网络图片URL(https://开头),也可以填本地路径。推荐用png格式正方形图标效果最好。

Q:一个分组里能混合放不同类型的卡片吗?
A:可以。普通卡片占1列,大图和图文卡片自动占2列,网格排版会自适应。

Q:分组的顺序是什么?
A:按你发送"创建商店分组"消息的先后顺序从上到下排列。

Q:能改颜色风格吗?
A:文件最开头 <style> 里有一段 :root 的CSS变量,比如 --primary: #0084ff 是主题色,--bg-body 是背景色,改这些值就行。深色模式的变量在 [data-theme="dark"] 里。不懂CSS也可以试着改,改了刷新就能看到效果。

Q:能改文本内容吗?
A:打开html文件搜索关键词修改后保存就行。

Q:标签页能自己创建吗?
A:目前标签页是内置的(首页、下载管理、我的应用),通过点击按钮或下载触发自动创建。如果你需要自定义标签页可以二次开发。





技术信息

给感兴趣的朋友补充一下技术细节:

  • 纯HTML + 内联CSS + 内联JS,无任何外部依赖(除了Remix Icon字体)
  • 图标库:Remix Icon(https://remixicon.com/),4.2.0版本,CDN引入
  • 主题切换基于CSS Variables + View Transitions API
  • 动画全部使用requestAnimationFrame手写(飞行用贝塞尔曲线插值,回弹用弹簧函数elasticOut),没用CSS animation是为了更精细的控制
  • 搜索历史用LocalStorage持久化





下载
游客,如果您要查看本帖隐藏内容请回复


如果觉得这套UI有帮到你,帮忙点个评分支持一下。有任何问题、建议或者BUG反馈都欢迎回帖,看到就回~

评分

参与人数 3好评 +3 精币 +6 收起 理由
远赴 + 1 + 3 新技能已get√
我爱逛精易 + 1 + 2 支持开源~!感谢分享
易神 + 1 + 1 支持开源~!感谢分享

查看全部评分


结帖率:92% (102/111)

签到天数: 3 天

57
发表于 2 小时前 | 只看该作者   广东省深圳市
学习学习
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 6 天

56
发表于 3 小时前 | 只看该作者   河南省郑州市
66666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 7 天

55
发表于 4 小时前 | 只看该作者   山东省烟台市
123123213123123123
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)

签到天数: 3 天

54
发表于 5 小时前 | 只看该作者   江苏省苏州市
哥哥vrf大Gv
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)

签到天数: 6 天

53
发表于 5 小时前 | 只看该作者   北京市北京市
持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 7 天

52
发表于 5 小时前 | 只看该作者   广东省汕头市
6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 4 天

51
发表于 6 小时前 | 只看该作者   广东省广州市
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:56% (14/25)

签到天数: 3 天

50
发表于 昨天 23:43 高大上手机用户 | 只看该作者   山西省大同市
厉害
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

49
发表于 昨天 22:50 | 只看该作者   美国
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表