安装包UI美化之路-nsNiuniuSkin界面在线设计引擎

news2024/11/15 9:19:50

一年多前,我们自己开发了一个用于编辑、预览、调试nsNiuniuSkin的UI界面工具,越来越觉得好用,忍不住想要分享出来!

今天我把这个工具重新整理了一下,功能又完善了一些;下面就介绍一下这个工具的功能和使用方法吧!

功能

nsNiuniuSkin界面在线设计引擎,是一个用于辅助nsNiuniuSkin的界面的预览与调试工具,类似于chrome的开发者工具,可以快速的查看各个界面效果,极大的提升界面配置的效率,主要功能与特点如下:

  • 控件像素级定位,快速准确的定位控件大小,控件间的距离等(可以1比1的对照蓝湖、磨刀等标)
  • 查看各个控件的属性,快速修改控件的字体、字号、颜色、大小、背景图等等各个属性,实时查看变化效果
  • 实时显示当前选中的控件的XML配置信息与属性,帮助定位控件在XML中的位置,反之亦然
  • 在不需要打包安装的前提下,预览所有的安装包子页面,一次确认完成所有界面开发
  • 自动循环切换安装页面,各个界面一次检查完
  • 1倍、1.5倍、2倍DPI放大效果图预览,快速确认不同DPI放大下的界面是否完整实现
  • 安装过程中弹出的提示窗口、询问窗口的预览,全程无死角UI查看
  • Js绑定各个UI按钮事件,完整模拟整个过程,沉浸式感受安装流程

界面效果

说了那么多的好处,咱们来看看效果吧。

控件定位与属性查看

询问窗口预览

窗口滚动显示效果

修改属性实时变化效果

我们将进度条的进度由20%改成40%,操作和UI变化如下: 

不同倍数效果

各种不同放大倍数的UI,一如既往的清晰:

1效果图:

1.5倍效图:

2倍效果图:

使用方法

nsNiuniuSkin界面在线设计引擎的使用方法非常简单,下载引擎包,登录后,点击打开调试页面,就可以开始了。

  1. 打开并登录设计引擎

  2. 根据界面提示打开调试页面(利洽科技在线UI设计器 )

    如果此处显示控件加载成功,便表示我们已经能正常的开始界面调试与预览了!

  3. 将nsNiuniuSkin的安装包UI资源路径填入(skin目录下一定是包含一个名叫install.xml文件的)

  4. 点击加载UI,即可显示出来安装包的UI界面了,然后点击安装配置、许可协议、安装中、安装完成、开始卸载、卸载中、卸载完成等按钮,即可快速切换不同安装状态下的界面效果

  5. 点击显示弹窗(确认)、显示弹窗(询问)按钮,预览提示与询问窗口的界面

  6. 在界面上选择不同的放大倍数,再次点击加载UI按钮,即可显示出来不同放大倍数的界面

  7. 还可以点击流程预览按钮,这个按钮将会依次显示各个安装界面,并做大概3秒的停留,以便查看每一个安装界面

是不是很简单,我在使用这个调试器辅助开发安装包UI时,效率和质量上都是成倍的提升。

原理介绍

nsNiuniuSkin界面在线设计引擎功能看着简单,实际上我们还是倾注了很多精力的,一些比较核心的技术要点如下:

  • 调试器对nsis插件的调用封装

    一般的情况下,我们只会开发nsis插件,然后集成到nsis中去使用,此次为了开发这个设计引擎,我们反其道而行,对nsNiuniuSkin插件进行了调用,以便使用与nsis中一样的插件接口;也只有这样,我们才能有底气的说,预览的效果就是实际的效果,也只有这样,在界面上修改属性,才能确保与安装过程中的行为一致。

  • 将nsNiuniuSkin的插件能力转化为浏览器上的Javascript的脚本能力

    我们希望做一个开放式的引擎调试平台,只有做成为大众所熟知的脚本化的接口,才能更加方便的加入交互式的功能,比如在Javascript脚本中调用nsNiuniuSkin的接口。这部分我们设计引擎相当于做了一个桥梁,将nsis插件的接口与回调事件都完整的与Javascript实现了对接,最终实现在Javascript中控制整个界面的行为。

  • Duilib的控件选中、Hover事件的处理,控件位置与边距的可视化呈现

    这部分应该说是整个引擎的核心能力所在,我们通过了极少的代码,在对Duilib引入极小的侵入性的前提下,能够实时的绘制出来鼠标选中的控件与当前Hover的控件的相对位置,大小等等;同时将选中控件的鼠标通过事件告知Javascript,在界面上属性列表的形式呈现出来。

    这个功能我们认为是有一定的创新性在的,未来我们可以扩展这个设计引擎,作为一个通用的Duilib的界面调试器,造福所有Duilib界面开发者。

未来展望

前文说过,目前的nsNiuniuSkin界面在线设计引擎是一个类似于Chrome开发者工具的一个存在。也就是说,可以在调试器界面上修改各个元素的属性,实时的查看变化,但却不能同步到界面配置的XML文件中,真正的修改动作,还需要在XML文件中进行修改。 未来我们要进一步做的事情如下:

  1. 预览与修改功能同步实现,界面上修改的数据,实时的变更到XML文件中,不用再修改XML文件
  2. 扩展调试器应用范围,通过实现回调接口的方式,支持众多外部的Duilib库,让其他的的界面开发者也能使用;更进一步的,对接其他的界面库也在考虑中。

结语

在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

愿天下没有难做的安装包!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度解析:Web 3.0和元宇宙

导读:元宇宙的终极形态势必是去中心化的,而现在的网络生态并不能完全满足元宇宙去中心化的需求。一些人认为,即将到来的Web 3.0时代和元宇宙需要的网络生态高度重合。Web 3.0或许能够成为人类迈向元宇宙道路上重要的一步。 01 Web的三次技术迭代 Web 3.0通过新技术体现出来,…

蓝桥杯2022年第十三届决赛真题-围栏(求凸多边形的面积)

题目描述 这天,小明在造围栏。 他提前在地上 (二维平面) 打好了 n 个洞,这 n 个洞的位置形成了一个凸多边形。当他准备把固定围栏的木杆插进去的时候,突然发现自己少准备了两根木杆。 如图,他现在只能在这 n 个洞中选出 n − 2 …

【linux】软件管理

linux软件管理 文章目录linux软件管理桥接模式下配置虚拟机连接互联网nmcli相关命令windows和linux之间的FTPlinux中的软件包类型rpm相关命令搭建本地软件仓库测试本地仓库重新挂载仓库到http服务器上设置仓库镜像开机自动挂载dnf相关命令配置EPEL(Extra Packages f…

学生个人网页设计作品:旅游网页设计与实现——成都旅游网站4个页HTML+CSS web前端网页设计期末课程大作业 学生DW静态网页设计 学生个人网页设计作品

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

【YSYY】DSPE-PEG-Transferrin;DSPE-PEG-TF转铁蛋白的主动靶向介绍;磷脂-聚乙二醇-转铁蛋白

产品简称:DSPE-PEG-Transferrin;DSPE-PEG-TF 中文名称:磷脂-聚乙二醇转铁蛋白 产品全称: 1,2-dipalmitoyl-sn-glycero-3-phosphoethanolamine-N-(polyethylene glycol)-Transferrin 产品外观:白色固体 结 构 式&a…

Kubernetes NUMA 感知

TopologyManager TopologyManager 在1.18版本中处于 Beta 状态,该功能支持 CPU 和外围设备(例如 SR-IOV VF 和 GPU)的 NUMA 对齐,使工作负载能够在针对低延迟优化的环境中运行。 在引入 TopologyManager 之前,CPU 和…

2022-11-17 更高效的Cascades优化器 - Columbia Query Optimizer

在较早的文章中介绍了些Volcano/Cascades优化器框架的设计理念和实现思路,基本是基于论文的解读: https://zhuanlan.zhihu.com/p/364619893 https://zhuanlan.zhihu.com/p/365085770 虽然cascades号称目前最为先进的优化器搜索框架,但不得不说这2篇pa…

ZNS SSD是否真的前途一片光明?

引言 在上次存储随笔更新了一篇ZNS相关的文章“炙手可热的ZNS SSD将会为数据中心带来什么?”以后,在存储圈也一度引发关注。某公司相关同学也在朋友圈疯狂转发,让一些朋友误以为是存储随笔专为某公司写的技术推广软文。 借这个机会在这里再次…

【算法100天 | 20】有环/无环链表的相交问题(Java实现)

若两个链表相交,请返回相交的第一个节点。 给定两个有可能有环也有可能无环的单链表,头节点head1和head2。 实现一个函数,如果两个链表相交,请返回相交的第一个节点(从这个节点开始,后续结构都一样&#…

Leetcode-每日一题792. 匹配子序列的单词数(分桶)

题目链接:https://leetcode.cn/problems/number-of-matching-subsequences/description/ 思路 方法一、分桶 题目意思:给你一个字符串 s 和字符串数组 words, 可以对字符串 s 某些位置上的字符进行删除,并不改变原来的字符顺序…

什么是SIMD?

为了提高 CPU 指令处理数据的能力,半导体厂商在 CPU 中推出了一些可以同时并行处理多个数据的指令 ——SIMD指令。 百度百科定义为: SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并…

新库上线 | CnOpenData中国核酸检测机构及采样点数据

中国核酸检测机构及采样点数据 一、数据简介 2020年1月21日,国家卫健委发布1号公告,将新型冠状病毒感染的肺炎纳入《中华人民共和国传染病防治法》规定的乙类传染病,并采取甲类传染病的预防、控制措施。目前,新型冠状病毒肺炎防控…

Ubuntu20.04安装c++版本的OpenCV

文章目录参考资料1. 安装步骤1.1 仅构建核心模块1.2 构建含有opencv_contrib的版本2. 安装过程碰到的问题2.1 编译opencv时,卡在IPPICV参考资料 https://www.jianshu.com/p/3c2fc0da7398https://docs.opencv.org/4.5.3/d7/d9f/tutorial_linux_install.htmlhttps://…

SpringBoot+Vue实现前后端分离的社区疫情防控管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

[附源码]java毕业设计昆明市人民医院血库管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

vim的基本操作

文章目录vim是什么vim的模式命令/普通模式(Normal mode)移动光标上下左右其余移动光标文本操作**进入替换模式:shiftrR**插入模式(insert mode)底行模式(last list mode)vim的配置vim一键配置vim是什么 简单理解&…

【附源码】计算机毕业设计JAVA仁爱公益网站

项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven Vue 等等组成,B/…

plt.plot

画点: 1,加一个参数 o,即画点。会根据列表自动设置为x坐标 plt.plot([1,5,3,4,5],"o")2,也可设置多个坐标

985 博士真的会舍弃华为年薪接近 100 万 offer,去选择年薪 20 万的公务员吗?

第一:从某脉软件上来看,大部分会选择进入事业单位,这是大部分人内心想法的真实写照,还仅仅只是口嗨呢? 第二:按道理来说,能读完博士应该是在某一个领悟有自己独特的见解,以个人发展…

JavaSE之注解

目录注解的属性类型元注解注解解析模拟junit最后注解的属性类型 注解只能存放简单的数据 如: 基本数据类型 String Class 注解 枚举 以上类型的一维数组 格式: public interface 注解名称 { public 属性类型 属性名(); } public interface MyAn1 {…