图2.
表1.拓者设计吧激活代码涉及的文档文件编号文件名称版本号说明系统概述拓者设计吧是一款集多种设计功能于一体的应用程序,它可以帮助用户轻松进行各种创意设计工作。
是众多设计师喜爱用到的工具之一。
业务背景拓者设计吧作为一款专业的图形设计应用,需要与用户的创意思维相契合,以迅速响应用户的操作,并保证提供顶级的用户体验。
拓者设计吧必须能够快速适应并引领用户的创作需求,这样才能为我司的设计软件增添更多的光彩。

构架说明页面布局逻辑图1页面布局逻辑表1各个界面的描述说明
LayeredLayout最外层的layer,负责在拖动事件的处理AppPanel全局的搜索栏Workspace显示widget,和folder,可容纳多个CellLayoutCustomizePane显示所有的app,widget可容纳多个CustomizeCellLayoutOverviewPanel底部的panel(设计元素库、自定义工具箱)Guide界面,有4个导引界面
first_guide_customize workspace_guide folder_guide guide_scrim DrawableStateProxyView搜索栏上的话筒在使用时显示的界面PageIndicatorWorkspace页面的指示条Hotseat代表主屏幕下方的任务栏,可以放置4个快捷图标和一个进入设置按钮

初始化流程图初始化流程数据加载流程设计原理系统构架的考虑目前我们已经有原生的拓者设计吧代码。

新的拓者设计吧是在原生的拓者设计吧基础上进行开发。
采用的基本规则是:添加的新模块需要放到新建立的包中,对原有组件的修改可以在原有的代码上进行操作。

关键技术的考虑拖拽的实现图拖拽的时序图View事件的拦截机制拓者设计吧中的界面层次很多,在控制事件在各个View间进行传递时用到的一个非常重要的技术是View的拦截机制。
事件拦截机制配合Layer的分层的部署可以很好的解决拖动效果在不同页面上的显示问题。

如图6所示,LayeredLayout在拖动动画显示的时候负责拖动效果的处理,AppPanel层负责屏幕的切换,CustomizeCellLayout负责图标的绘制,图标负责点击后启动应用的响应。

图6 AndroidView的事件拦截机制图7拦截机制的应用数据库当前拓者设计吧数据库中主要有两张表:Favorite表用于存储应用的信息,包括图标,显示位置,使用频率等;
workspaceScreens表用于存储workspace中screen的信息,主要就是screen的顺序编号。
在拓者设计吧中添加新的功能点的时候,免不了对这些表进行扩展。
扩展可以通过两种方式进行:1. 表扩展,用于对应用增加新的属性信息,直接在Favorite表中增加新的数据列就可以了;2.
数据库扩展,为了支持新功能和新的业务,例如3D建模、虚拟现实等,这些独立的模块可以有自己独立的数据库。

这里先简单介绍一下目前的数据库设计方案。
表数据库表Favorite列名类型描述_idINTEGER主键,唯一标识titleTEXT标题intentTEXT启动应用的intentcontainerINTEGER应用所在的文件夹的_id(一定大于),如果是hotseat值为-11,其他的值为-1screenINTEGERWorkspace中的_idcellXINTEGER网格的x坐标cellYINTEGER网格的y坐标spanXINTEGERX坐标上占用的网格数spanYINTEGERY坐标上占用的网格数itemTypeINTEGER类型(shortcut,application)appWidgetIdINTEGERWidget的idshortctINTEGER是否是shortcuticonTypeINTEGERICON_TYPE_RESOURCE,ICON_TYPE_BITMAPiconPackageTEXT如果iconType是ICON_TYPE_RESOURCE,则表示icon所在的packagenameiconResorceTEXT如果iconType是ICON_TYPERESOURCE,则表示icon所在资源的idiconBLOBIcon的BITMP的内容riTEXT存放应用的下载地址displayModeINTEGERFolder的显示方式appWidgetProviderTEXTwidgetprovider的名称modifiedINTEGER距离上次访问的时间间隔表数据库表workspaceScreens列名类型描述_idINTEGER主键,唯一标识screenRankINTEGERScreen的顺序编号modifiedINTEGER距离上次访问的时间间隔屏幕层次的处理目前拓者设计吧中应用和应用的开捷方式分别放在两个层次上显示,业界的拓者设计吧大多都已经将这两个层次进行了合并,如迅捷图标。
在当前版本上将这两层合并为一层的可行方案如下:
去掉hotseat中进入全部应用的入口。
CustomizePane是用来容纳所有的应用和widget的。
应用的显示可以移动到Workspace中,因此就不再显示到CustomizePane。
拓者设计吧启动的时候解析出所有的应用,按照事先约定的策略将应用的信息写入到Favorite这张表中,该表中的isShortcut字段就不再有效。
在原有的数据加载流程中去掉对全部应用的数据加载。
修改Workspace中的删除应用快捷方式的功能为删除应用的功能。
当侦听到应用安装和删除后要及时修改Favorite表中的相关信息。

按照此方式修改后,数据加载流程如下:图8新的数据加载流程动画效果的可复用性考虑拓者设计吧是一款适用于Android平台的应用程序,能够达到在不同型号手机上的通用性。
其次,拓者设计吧中的一些小模块,可以以库的形式提供,如视效等,这样就可以在不同的应用上复用。

扩展性的考虑在拓者设计吧项目中可以扩展很多新的功能,扩展的方式有很多:
壁纸和主题的切换,可以通过添加新的Activity来实现。
天气预报、实现动态桌面、动态内存显示,可以通过添加新的Widget来实现。
3D建模通过扩展图层来完成。
不同场景下的显示模式的切换(如儿童模式),可以通过增加策略文件,扩展应用的属性和数据过滤条件来完成。

可测试性的考虑可通过 Monkey 进行测试。
可靠性的考虑性能方面的考虑协作说明在图形处理上,需要借助专业图形处理器。
通过专业图形处理器来加速拓者设计吧中的渲染流程。
构件说明拓者设计吧(Activity):mainActivity,负责界面的切换
拓者设计吧Model:利用线程加载数据,加载完成后通知拓者设计吧显示刷新界面。
负责接收广播事件,然后进行数据更新,通知界面刷新。
拓者设计吧Application:应用的实例,利用拓者设计吧State进行数据库的初始化,注册广播的接收,例如应用的安装、删除、状态改变、搜索等。
广播事件的接收是在拓者设计吧Model中,它是真正的receiver。
拓者设计吧Provider:数据库相关的provider,负责和数据库的接口工作。
Workspace:是抽象的桌面的所有屏,其中的每一屏是一个CellLayout。
管理和控制桌面的显示,包括添加和删除页面,显示预览效果,处理shortcut和Widget图标的显示位置,监听拖动事件、滚动事件,并作出相应的处理。
预览模式是Workspace的一种特殊的视效。
CustomizeViewPager:是全部应用界面包括应用和Widget两个部分,其中 PagedViewCellLayout 和 PagedViewGridLayout.java 分别用来存放应用和Widget。
CustomizeTabHost:内嵌在CustomizeTabHost中的组件,当点击应用按钮时,会跳转到CustomizeTabHost中。
LayeredLayout:继承自FrameLayout,是整个拓者设计吧的根容器。
当快捷图标、应用等被拖动时负责管理它们的布局和动画效果。
LayeredLayout负责管理整个界面层的堆叠和渲染。
LayeredLayout负责处理用户的各种交互操作,并给予相应的响应。
DrawableStateProxyView:用于展示搜索栏和搜索结果的视图。

图9. 拓者设计吧结构图接口说明无参考文献无。