摘要

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

下载链接:

https://www.microsoft.com/zh-cn/store/apps/%e5%be%ae%e8%bd%af%e5%bf%85%e5%ba%94%e8%af%8d%e5%85%b8win10%e7%89%88/9nblggh63sw0

第一印象

         

先来两张我们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下载:

https://www.microsoft.com/zh-cn/store/apps/%e5%be%ae%e8%bd%af%e5%bf%85%e5%ba%94%e8%af%8d%e5%85%b8win10%e7%89%88/9nblggh63sw0

必应词典UWP版-开发小结的更多相关文章

  1. 微软必应词典UWP -2017春

    必应UWP调研,评测 软件平台:windows10 软件名称:微软必应词典 软件类型:UWP Bug Bug1 当在文本框中进行输入时,在谷歌拼音输入法状态下,无法使用Shift键切换到谷歌拼音的纯英 ...

  2. 必应词典手机版(IOS版)与有道词典(IOS版)之问卷分析

    我们制定了一个调查问卷: 1.年龄分布: 2.地域分布: 3.是否用过必应词典? 对于必应词典还是没用过的人数更多. 4.是否用过有道词典? 有道词典的使用率更高一点. 5.对于必应的基本功能给几分? ...

  3. 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】

    1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...

  4. 个人作业—Week2:微软必应词典案例分析

    调研.评测 bug报告: 标题:Window 10版必应词典客户端口语练习功能无法使用 环境:Window 10, 微软必应词典(UWP) 版本2.6.1.0,屏幕无重力感应模块 重现步骤: 1)   ...

  5. 微软必应词典客户端的案例分析——个人Week3作业

    第一部分 调研,评测 Bug探索 Bug No1.高亮语义匹配错位 环境: windows8,使用必应词典版本PC版:3.5.0 重现步骤: 1. 搜索"funny face"这一 ...

  6. 个人作业-2 必应词典安卓APP分析

    产品: 必应词典 安卓版 第一部分:调研,评测 1.对于这款app的第一印象就是界面不是很美观,页面排版十分混乱,有些功能比较鸡肋,功能也不是很丰富,不过这款app的ui设计相对简洁,让人容易上手,对 ...

  7. 【软件工程-Teamwork 2】必应词典软件手机版测试报告

    测试人员:聂健(N).居玉皓(J).吴渊渊(Wy).汪仁贵(Wr).吕佳辉(L).杜冰磊(D) 测试软件:必应词典软件手机版 版本:2.2.0版本(Android) 引言: 我们的测评报告的主体主要分 ...

  8. 个人博客作业Week3(微软必应词典客户端的案例分析)

    软件缺陷常常又被叫做Bug,即为计算机软件或程序中存在的某种破坏正常运行能力的问题.错误,或者隐藏的功能缺陷.缺陷的存在会导致软件产品在某种程度上不能满足用户的需要.IEEE729-1983对缺陷有一 ...

  9. 个人博客作业Week 3 ——微软必应词典客户端

    产品:必应词典客户端 (http://bing.msn.cn/dict/)必应词典有PC,Win8/10, Windows Phone,iPhone,Android,iPad 客户端 选择客户端为:i ...

随机推荐

  1. Python中获取异常(Exception)信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种python中获取异常信息的方法,这里获取异常(Exception)信息采用try...except...程序 ...

  2. javascript设计模式(单体模式)

    主要内容: js中最基本.应用最广的模式就是单体模式,实现原理是将代码组织为一个逻辑单元,这个逻辑单元中的代码可以通过单一的变更进行访问,确保对象只存在一份实例. 单体模式的特点: 在网页中使用全局变 ...

  3. js高级应用

    特别板块:js跨域请求Tomcat6.tomcat7 跨域设置(包含html5 的CORS) 需要下载两个jar文件,cors-filter-1.7.jar,Java-property-utils-1 ...

  4. php嵌套数组递归搜索返回数组key

    var rewardTypes={"experience":{"\u7ecf\u9a8c\u503c":{"1":"\u660e\ ...

  5. 也说说angularJs里的evalAsync

    虽说angular都快出2.0了,到了2.0这些东东都会被干掉.不过我们眼前的事还是要处理. $evalAsync和$timeout到底什么区别,网上说法很多,最近看到的是说在directive里就怎 ...

  6. ES6中的var let const应如何选择

    javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...

  7. OD使用教程5

    怎样恢复数据被改过的代码 点击m进入内存分布图 双击进入文件头 将过大的值一一修改为正常值 普通程序没有动态链接表所以值改为0 保存:首先记住地址 其次 选中差不多的长度,保存 正常的程序

  8. 优质IT资源分享社区www.itziyuan.top

    你好,我是“优质IT资源分享社区(www.itziyuan.top)”的建设者,同时也是一名普通的IT的热爱者. 首先,我介绍一下网站所收录的教程分类:   基础编程语言: C,C++,C#,Java ...

  9. python模块及包的导入

    一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...

  10. viewpage滑动查看图片并再有缩略图预览

    首先看下效果图, 主要功能分为3大块 一是滑动查看,通过viewpage来实现,方法见 http://www.cnblogs.com/lovemo1314/p/6109312.html 二.点击放大 ...