必应词典UWP版-开发小结
摘要
必应词典UWP版已经上线2周了!相信有不少用户都已经体验过了吧!得益于Win10全新、强大的API,新版词典在性能上、UI体验上都有了大幅的提升,今天,小编就为大家讲讲必应词典UWP开发的故事。另外,欢迎大家体验我们的app,并向我们提供宝贵的意见!
下载链接:
第一印象

先来两张我们app的靓照,大家有没有觉得界面清爽呢?我们的UWP对各种尺寸的屏幕、各个尺寸的窗口都有相应的适配。在较窄的屏幕或窗口下,我们使用汉堡键和SpliteView作为页面切换的控制,而在较宽的屏幕上我们使用的则是Tabs,这样能更合理的增加屏幕有效内容的显示,也符合windows app设计的标准。关于内容的显示,我们也是在不同尺寸窗口下会有不同的表现,您注意到了么?
开发的故事
词典的靓照就欣赏到这里,接下来我们讲讲必应词典的开发,比较工程地讲,必应词典的Solution主要由以下几个核心的Project构成:
其中,Fundamental主要包含词典数据的Schema、App Settings、Constants和一些辅助工具类;Storage,顾名思义,封装了词典关于存储的接口;Query Engine,则是查词逻辑的核心;Word List实现了生词本的功能;而Adaptive UI,就是我们看到的页面显示。
Storage
关于存储,可以根据需要的不同,可以分为File、Dictionary、Cache三个部分,File Manager实现了对本地文件的操作,包括存储、读取等等。在我们的词典中,封装着一个用户本地词典,便于用户离线查词,里面的数据是用sqlite数据库存储的,Dictionary Manager,主要是对本地词典的操作,包括查询、记录历史等等。Cache Manager,主要用于管理用户访问网络的Cache数据,以键值对的形式存储。而Cache本身又分为两层,Disk Cache和Memory Cache。Disk Cache在storage中使用sqlite存储,使得查询效率更高。我们知道,memory的访问速度,是远大于Disk的访问速度的,所以在Disk Cache的基础之上,我们还有一层Memory Cache。同时Memory Cache基于LRU的置换原则,也不会占用过多的内存开销,使查询更为快捷。
Query Engine
查词功能,是我们词典的最重要内容,包括很多内容的查询,可以分解为本地词汇的查询、网络词汇的查询、句子的查询、音频视频的查询、词语自动补全的查询等等。在Search box中查询,在Result Page中显示结果,这一过程是词典app的最重要的环节。在这一过程中,有多个查询步骤,Query Engine对外只暴露一个query接口,对于多次查询的结果分别反馈到监听查询的IQueryEngineListener中,而不是拿到所有数据后再进行反馈,这样使用户在查词过程中就会有一个比较连续、流畅的体验。
Word List
生词本的逻辑相对比较简单,基本就是sqlite数据库几张表的查询,但是比起之前版本xml的存储结构,性能上有了很大的提升。
Adaptive UI
UI部分,在文章的开始部分已经介绍了,这里要说的是,大家看到的页面,可不是由一个Page完成的哦,确切来说,在app的每个页面中,映入我们视线的,都是由两个Page构成的,如下图所示:
最外层的页面,我们叫做Main Frame,包括汉堡键、Split View、Tabs、Query Bar等等,实现对app页面的切换等等。上图中用红色边框框出来的部分,是用来显示app内容页面的,我们叫做Content Frame。这样的实现,使页面逻辑更加清晰,维护也更加方便。关于嵌套式页面的实现,请参考另外一篇博文: UWP开发笔记——嵌套式页面的实现(http://www.cnblogs.com/ms-uap/p/4860121.html)。
在页面的适配上,VisualStateManager,为我们提供了强大的接口,具体响应式UI的开发方式,请参考Windows10 UWP开发 - 响应式设计(http://www.cnblogs.com/ms-uap/p/4536459.html)。
这就是我们app的一个大体结构。
总结
自App上线以来,我们得到了许许多多用户的反馈,在此谢谢大家,你们的意见我们一定会加倍重视,我们也会根据大家的反馈不断得更新我们的产品。由于是第一个版本,所以功能会比较少,生词本同步、划词搜索功能等我们都会逐步添加到我们的产品中。同时,我们也由衷希望得到您的好评,谢谢!
APP下载:
必应词典UWP版-开发小结的更多相关文章
- 微软必应词典UWP -2017春
必应UWP调研,评测 软件平台:windows10 软件名称:微软必应词典 软件类型:UWP Bug Bug1 当在文本框中进行输入时,在谷歌拼音输入法状态下,无法使用Shift键切换到谷歌拼音的纯英 ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析
我们制定了一个调查问卷: 1.年龄分布: 2.地域分布: 3.是否用过必应词典? 对于必应词典还是没用过的人数更多. 4.是否用过有道词典? 有道词典的使用率更高一点. 5.对于必应的基本功能给几分? ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
- 个人作业—Week2:微软必应词典案例分析
调研.评测 bug报告: 标题:Window 10版必应词典客户端口语练习功能无法使用 环境:Window 10, 微软必应词典(UWP) 版本2.6.1.0,屏幕无重力感应模块 重现步骤: 1) ...
- 微软必应词典客户端的案例分析——个人Week3作业
第一部分 调研,评测 Bug探索 Bug No1.高亮语义匹配错位 环境: windows8,使用必应词典版本PC版:3.5.0 重现步骤: 1. 搜索"funny face"这一 ...
- 个人作业-2 必应词典安卓APP分析
产品: 必应词典 安卓版 第一部分:调研,评测 1.对于这款app的第一印象就是界面不是很美观,页面排版十分混乱,有些功能比较鸡肋,功能也不是很丰富,不过这款app的ui设计相对简洁,让人容易上手,对 ...
- 【软件工程-Teamwork 2】必应词典软件手机版测试报告
测试人员:聂健(N).居玉皓(J).吴渊渊(Wy).汪仁贵(Wr).吕佳辉(L).杜冰磊(D) 测试软件:必应词典软件手机版 版本:2.2.0版本(Android) 引言: 我们的测评报告的主体主要分 ...
- 个人博客作业Week3(微软必应词典客户端的案例分析)
软件缺陷常常又被叫做Bug,即为计算机软件或程序中存在的某种破坏正常运行能力的问题.错误,或者隐藏的功能缺陷.缺陷的存在会导致软件产品在某种程度上不能满足用户的需要.IEEE729-1983对缺陷有一 ...
- 个人博客作业Week 3 ——微软必应词典客户端
产品:必应词典客户端 (http://bing.msn.cn/dict/)必应词典有PC,Win8/10, Windows Phone,iPhone,Android,iPad 客户端 选择客户端为:i ...
随机推荐
- NPOI 导入导出excel 支持 03 07
因为微软的office成本太高了,所以开发项目的时候电脑上没安装office,而是安装了wps.但开发语言用的是C#,所以直接调用微软的office组件是很方便的,但一方面慢,一方面成本高,所以从网上 ...
- JavaScript事件——冒泡、捕获
本节要点:1.干预系统的事件处理机制 (一)DOM事件流 (二)停止事件冒泡 (三)阻止事件的默认行为 1.干预系统的事件处理机制 (一)DOM事件流 DOM模型是一个树形结构,在DOM模型中,HTM ...
- jQueryAjax笔记
ajax优点:能在不刷新整个页面的前提下更新数据,使用户操作与服务器响应异步化. ajax缺点:破坏浏览器“前进”.“后退”按钮的正常功能,搜索引擎爬虫不能理解那些奇怪的JS代码和因此引起的页面内容的 ...
- 121. Best Time to Buy and Sell Stock (一) leetcode解题笔记
121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...
- 如何将C++代码逆向生成类图 (VS2013)
1. 将代码添加到VS2013工程中: 2. 切换到"类视图": 3. 选中项目 右键"视图"->"查看类图". 如果项目文件太多的话 ...
- javascript除法如何取整
Math.round(x) 四舍五入,如Math.round(0.60),结果为1:Math.round(0.49),结果为0: Math.floor(x) 向下舍入,如Math.floor(0.60 ...
- android的单击监听事件
Button button = (Button) findViewById(R.id.button1); //1.直接new出来 button.setOnClickListener(new View. ...
- UWP的拖拽功能
简单的拖拽实现: <Grid x:Name="G1" AllowDrop="True" DragEnter="G1_DragEnter" ...
- 19. UIAlertController 提示框获取文本内容,打印控制台上
1.首先定义一个全局字符串变量,方便接收获取的文本内容 2. -(void)viewDidAppear:(BOOL)animated{ UIAlertController * alert = [UIA ...
- noip2010-t3
[题目描述] S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来 ...