摘要

必应词典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. c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现

    主窗体:  子窗体: 把子窗体嵌入到主窗体的panel 右侧中: 代码: { public MainForm() { InitializeComponent(); } private void Clo ...

  2. s1=s1+1与s1+=1的区别

    刚看到一面试题,题目是这样的:short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错? 初看之下就是s1=s1+1和s1+=1的区别.在开发中我们基本上是使用后一种 ...

  3. 高流量站点NGINX与PHP-fpm配置优化(译)

    使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比T ...

  4. jekyll安装的斗智斗勇

    jekyll---将纯文本转化为静态网站和博客,GitHub Pages 可以运行 Jekyll,你很简单就可以完全免费的在 GitHub 上发布网站. 小白安装jekyll时的若干问题,有错误欢迎指 ...

  5. Vim自动补全神器–YouCompleteMe

    YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...

  6. Java回调函数

    维基百科上的定义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 所谓回调,就是客户程序C调用服务程 ...

  7. Django学习中的问题总结

    1. 在windows环境下,用pip安装Django后通过在python/Script目录下会生成django-admin.py文件,此时由于pip环境变量已经添加,diango-admin.py与 ...

  8. Android最大可运行内存

    int maxMemory = (int) Runtime.getRuntime().maxMemory();

  9. 用ADMM求解大型机器学习问题

    [本文链接:http://www.cnblogs.com/breezedeus/p/3496819.html,转载请注明出处] 从等式约束的最小化问题说起:                       ...

  10. 【转】COM技术内幕(笔记)

    COM技术内幕(笔记) COM--到底是什么?--COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义--COM术语以及这些术语的含义.使用和处理COM对象--如何创建.使用和销毁COM对象 ...