整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「深度小课堂」如何开发一款属于自己的时尚屏保应用?

还记得刚推出屏幕保护功能那会儿,小编偶逛论坛,围观大家对这个功能的评价。其中让我印象最深的一句话就是:“一股Windows98风”,总之,评价总结出来就是一个字:“吃藕”。

大家追求美好事物的诚挚之心深深地打动了我,而且,小编个人做事情稍有些未雨绸缪,在屏幕保护程序开发之初,就已经定好了易于扩展的架构,所以我当时就下定了决心,为大家开发一个非Windows98风格的屏保。

为了达到绝对“非Windows98”的目的,小编特意选择了Windows10中的默认屏保作为参考,在无数个周末的战斗下,最终成功将名为“泡泡”的屏保应用发布到了商店。(项目地址:https://github.com/zccrs/screensaver-pp )

本着“授人以鱼不如授人以渔”的理念,小编特地整理了这篇文章协助大家开发一款属于自己的时尚屏保应用。

正文

在Linux+X11生态环境中,xscreensaver是最“流行”的屏幕保护程序,有着非常多的屏保资源,所以deepin-screensaver必然要兼容它的资源。但是,xscreensaver对屏保资源的扩展方式并不符合deepin的开发理念,因此,deepin-screensaver实现了一套全新的屏保扩展方式。

支持使用Qt qml模块编写屏保应用,一个标准的屏保应用只需要包含一个 “xx.rcc”文件,将文件安装到/usr/lib/deepin-screensaver/resources目录。

rcc 格式是一个编译之后的Qt资源文件,在这个资源文件中至少要包含两个文件:qml代码文件、屏保封面图。

图中文件名括号内为其别名,也就是屏保主应用加载文件时能读取到的文件名。

qml代码文件:屏保应用的代码入口,会被屏保主程序加载显示

屏保封面图:设置屏保入口显示的预览图,支持svg png jpeg bmp等格式

所有的文件必须以特定的目录结构组织到一个Qt资源文件(qrc文件),以“泡泡”屏保为例:qml.qrc 为其资源文件,包含三个前缀路径:

/deepin-screensaver/modules:放置屏保应用的主qml文件,此路径下的所有qml文件都会被当做一个独立的屏保应用,因此,项目中的其它文件需要额外建立新的前缀放置。

/deepin-screensaver/modules/cover:放置屏保应用封面图文件,文件名称必须和modules目录中的qml文件一致,且包含它的 “.qml” 后缀。如图上,qml文件全名为:”pp.qml”,封面图全名为:”pp.qml.svg”。

/deepin-screensaver/modules/pp:此前缀不是必须的,用于放置项目中的其它文件。为了不与其它项目产生冲突,建议使用项目名作为目录名称。

资源文件最好以项目名称命令,避免和其它屏保应用冲突。

另外,大家可能已经发现了,这三个前缀都有一个共同点,那就是以“/deepin-screensaver/modules”开头,的确,这是一个格式要求,不能随意更改路径。

主qml文件作为屏保应用的入口,它的根元素一定要设置:

这样才能确保屏保应用充满整个屏幕。在多屏的情况下下,会创建多个窗口示例,可根据屏幕绘制不同的屏保内容。

项目编译其实很简单,只需要使用Qt提供的rcc命令将qrc文件编译为rcc文件即可,使用qmake构建系统时,可以在pro文件中调用以下命令:

当然,最后不要忘记将xx.rcc文件安装到deepin-screensaver所要求的目录。做完这所有的步骤后,回到桌面,在右键菜单中选择“壁纸与屏保”,切换到屏保设置后即可看到新添加的屏保应用。

另外,deepin-screensaver为qml提供了获取当前屏幕截图的接口,只需要为Image项指定特定的路径即可:

由于要获取屏幕名称,上述代码需要 “import QtQuick.Window 2.2”使用。

后记

屏保封面图最佳比例为:8:5,推荐使用svg格式,以更好的适应高分屏缩放。推荐大家使用Qt Creator作为项目的开发工具,可以方便的编辑qrc文件。泡泡屏保是一个完整的demo,有任何疑问的地方都可以以其作为参考。

参考

  • “泡泡”屏保项目:https://github.com/zccrs/screensaver-pp
  • Qt资源文件: https://doc.qt.io/qt-5/resources.html

自知乎几十个高赞回答,汇总后整理出来的,持续更新中!
已经过滤,剔除,所有需要付费的网站。分享给大家!

一、学术论文类
学术搜索:
https://scholar.chongbuluo.com/
百度学术:
https://xueshu.baidu.com/
谷歌学术:
https://scholar.chongbuluo.com/GoogleScholar.html
IDAta 搜索:https://www.cn-ki.net/
scihub:
http://www.sci-hub.ren/
Library Genesis:
http://libgen.lc/
arXiv:
https://arxiv.org/

二、考试类
魔方格:
https://m.mofangge.xin/
简搜题:
https://www.jiansouti.com/
考试酷:
https://www.examcoo.com/

三、历史类
全历史:
https://www.allhistory.com/
历史教学网:
http://www.zxls.com/
历史车轮:
https://www.lishichelun.com/

四、书籍类
书格:
https://new.shuge.org/
书伴:
https://bookfere.com/
一单书:
https://yidanshu.com/
微信读书:
https://weread.qq.com/
鸠摩搜书:
https://www.jiumodiary.com/
苦瓜书盘:
http://www.kgbook.com/
书享家:
http://shuxiangjia.cn/

五、古籍字画类
搜韵:
https://sou-yun.cn/index.aspx
诗歌库:
http://lib.xcz.im/library
中华珍宝馆:
http://www.ltfc.net/
社科文献库:
http://www.ncpssd.org/Literature/ancientbooklist.aspx?nav=5
汉典古籍:
http://gj.zdic.net/
诸子百家:
https://ctext.org/search.pl?if=gb&remap=gb
国学大师:
http://www.guoxuedashi.net/

六、文档转换类
AllToAll:
https://www.alltoall.net/
Pdf2doc:
https://pdf2doc.com/zh/
Office Converter:
https://cn.office-converter.com/
iLovePDF:
https://www.ilovepdf.com/zh-cn
**PDF 云:
https://edit.foxitcloud.cn/
Aconvert:
https://www.aconvert.com/cn/

七、在线工具
百度脑图:
https://naotu.baidu.com/
腾讯文档:
https://docs.qq.com/desktop/
gitmind:
https://gitmind.cn/app/template?lang=zh
在线 PS:
https://ps.gaoding.com/
在线流程图:
https://www.processon.com/
airdroid:
http://web.airdroid.com/
搜图神器:
https://www.logosc.cn/so/

八、财经工具
雪球财经导航:
https://xueqiu.com/dh
同花顺问财:
http://www.iwencai.net/unifiedwap/home/index?qs=index_channel
乐咕乐股:
https://www.legulegu.com/course
巨潮财讯:
http://www.cninfo.com.cn/new/index
财联社:
https://www.cls.cn/

九、趣站
炫酷 H5:
http://www.species-in-pieces.com/
星系观察:
https://stellarium-web.org/
http://www.staggeringbeauty.com/
http://endless.horse/
http://globe.cid.harvard.edu/
世界上最小的网站:
http://www.guimp.com/
知妖:
https://www.cbaigui.com/
键盘音乐:
https://aidn.jp/mikutap/
台风路径:
http://typhoon.zjwater.gov.cn/default.aspx
在线换图:
http://www.sketchswap.com/
听雨:
http://rain.xxoojoke.com/
趣站地图:
https://www.sitemap.fun/
大海的声音:
http://virtocean.com/
时光邮局:
https://www.hi2future.com/
摸鱼热榜:
https://tophub.today/
全景故宫:
https://pano.dpm.org.cn/gugong_app_pc/index.html
气泡屏保:
https://www.dedg3.com/
历代人物印鉴库:
http://diglweb.zjlib.cn:8081/zjtsg/zgjcj/index.htm
渣男 - 说话的艺术:
https://lovelive.tools/

十、导航站
创造狮导航:
http://www.chuangzaoshi.com
大数据导航:
http://hao.199it.com/
广告人导航:
https://www.addog.vip/
安全导航:
https://www.anquanquan.info/

个视频用CSS写一个非常简单的动态背景。大家可以看到在屏幕底部不断的有彩色的小泡泡升起来,而且是逐渐变大的,直到离开屏幕。来看一下代码,html非常简单。

·这些小泡泡用span来写,现在写了一些基本的样式,其它样式重新来写。来写一下这些小泡泡的样式,三个小圆出来了,再给这些小球加几层阴影,让它们看起来有点像气泡。

·接着来写个动画,让这些气泡从底部升起来。一开始把这些气泡移出屏幕的底部,这里给它100vh,并且一开始是比较小的,就让它变成0,再慢慢放大。动画结束的时候,气泡从顶部移出视口的范围,并且逐渐放大到原来的大小。绑定下动画,动画效果有了。

·现在单独对偶数这一个设置样式,让它的色彩看起来丰富一点。阴影复制一下(1),同样用这个颜色。现在可以看到中间第二个颜色已经改变了,然后要多生成一些小球。而且因为这个demon只考虑用css和h t ml来写,什么js、less、sass这些都不用。

·所以这些小球这里用一个最愚蠢的方法就是多写一些span。这里写了很多个span,也就是这些小球,这些气泡,每一个都给它定义了一个变量i。这里有什么用?等一下再来说。当然正常的不会这样子来写。像这些span和变量i都可以用js来生成,这个大家可以自己试着来改。

·这堆气泡生成了,但是这里希望每个小球的运动看起来随机一点,不要同时放大同时消失。这里要怎么样实现这种随机性?其实也非常简单。不要给所有气泡设置统一的动画时间,这里可以用calc()计算函数,用120去除以刚才定义的这个变量。因为每个视频里面设置i的值是不一样的。所以每个气泡完成动画的时间也是不一样的,这个参数大家可以自己来调整。

来看一下最终的效果,没有问题,这些气泡现在看起来每一个都是随机出现,随机放大和消失的。

这个视频就到这里,感谢大家的收看。