一种图标移动方法和装置 【技术领域】
本发明涉及移动终端技术, 特别涉及一种移动终端中的图标移动方法和装置。背景技术 对于智能手机等移动终端, 通常都会具有一个一定尺寸的显示屏, 该显示屏对应 的区域称为显示区域, 通常为矩形, 其上可显示有各种应用程序对应的图标, 用户通过点击 图标即可使用其对应的功能。 另外, 为吸引用户使用, 现有智能手机等会允许用户根据需要 对各图标进行拖拽, 即改变图标所处的位置。 如果显示区域内的图标较少, 可能不会存在问 题, 但如果图标较多 ( 相应地, 空闲区域就会较少 ), 则有可能会导致不同的图标出现重叠, 从而给用户的使用带来不便, 进而降低用户体验。
发明内容 有鉴于此, 本发明的主要目的在于提供一种图标移动方法, 能够提升用户体验。
本发明的另一目的在于提供一种图标移动装置, 能够提升用户体验。
为达到上述目的, 本发明的技术方案是这样实现的 :
一种图标移动方法, 包括 :
A、 确定待移动图标对应的模块 X 和移动方向 ;
B、 将模块 X 沿移动方向移动一个单位, 并确定模块 X 是否和其它模块存在重叠部 分, 如果否, 则将移动后的状态作为移动结果, 结束处理 ;
否则, 将和模块 X 存在重叠部分的模块确定为阻挡模块, 将模块 X 恢复原位后与阻 挡模块交换位置, 并确定是否能够正确安置除模块 X 和阻挡模块以外的所有其它模块, 如 果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 执行步骤 C ;
C、 确定模块 X 是否可在移动方向上继续移动, 如果否, 则移动失败, 结束处理 ; 否 则, 将模块 X 在移动方向上移动一个单位, 并确定是否能够正确安置除模块 X 以外的所有其 它模块, 如果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 重复执行步骤 C。
一种图标移动装置, 包括 : 第一处理单元、 第二处理单元和第三处理单元 ;
所述第一处理单元, 用于确定待移动图标对应的模块 X 和移动方向 ;
所述第二处理单元, 用于将模块 X 沿移动方向移动一个单位, 并确定模块 X 是否和 其它模块存在重叠部分, 如果否, 则将移动后的状态作为移动结果, 结束处理 ; 否则, 将和模 块 X 存在重叠部分的模块确定为阻挡模块, 将模块 X 恢复原位后与阻挡模块交换位置, 并确 定是否能够正确安置除模块 X 和阻挡模块以外的所有其它模块, 如果是, 则将安置后的状 态作为移动结果, 结束处理, 否则, 通知所述第三处理单元执行自身功能 ;
所述第三处理单元, 用于确定模块 X 是否可在移动方向上继续移动, 如果否, 则移 动失败, 结束处理 ; 否则, 将模块 X 在移动方向上移动一个单位, 并确定是否能够正确安置 除模块 X 以外的所有其它模块, 如果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 重复执行自身功能。
可见, 采用本发明的技术方案, 将待移动图标对应的模块 X 沿移动方向进行移动, 如果和其它模块不存在重叠部分, 则将移动后的状态作为移动结果, 否则, 和阻挡模块交换 位置, 从而避免了不同图标出现重叠, 为用户的使用带来了方便, 提升了用户体验。 而且, 本 发明所述方案的可扩展性很强, 可适用于不同显示区域大小的移动终端。 另外, 本发明所述 方案实现简单、 运行可靠, 不受操作系统平台和编程语言等限制, 便于普及。附图说明
图 1 为本发明图标移动方法实施例的流程图。
图 2 为本发明方法实施例中的掩码表示意图。
图 3 为本发明方法实施例中的显示区域示意图。
图 4 为本发明方法实施例中将待移动图标对应的模块沿移动方向移动一个单位 后的示意图。
图 5 为本发明方法实施例中确定出的最小包络矩形区域的示意图。
图 6 为本发明方法实施例中对最小包络矩形区域进行镜像翻转后的示意图。
图 7 为本发明图标移动装置实施例的组成结构示意图。 具体实施方式
针对现有技术中存在的问题, 本发明中提出一种全新的图标移动方案, 能够避免 不同图标的重叠, 从而提升用户体验。
为使本发明的技术方案更加清楚、 明白, 以下参照附图并举实施例, 对本发明所述 方案作进一步地详细说明。
图 1 为本发明图标移动方法实施例的流程图。如图 1 所示, 包括以下步骤 :
步骤 11 : 确定待移动图标对应的模块 X 和移动方向。
对于不同厂商以及不同型号的移动终端, 其显示区域的大小可能不同, 比如可能 为 320×240, 即显示区域的长和宽分别为 320 个单位和 240 个单位, 也可能为 800×480 或 其它。对于每个图标来说, 均会占用一定大小的区域 ( 其长宽需要小于或等于显示区域的 长宽 ), 本实施例中, 将待移动图标对应的区域称为模块 X。
通过监控用户的操作可以确定出待移动图标对应的模块 X 和移动方向。比如, 用 户通过光标选中了图标 1, 并点击了向下方向键, 那么则将图标 1 对应的区域确定为模块 X, 将向下的方向确定为移动方向。当然, 此处仅为举例说明, 具体实现方式不作不限。
步骤 12 : 将模块 X 沿移动方向移动一个单位。
步骤 13 : 确定模块 X 是否和其它模块存在重叠部分, 如果否, 则执行步骤 14, 否则, 执行步骤 15。
在实际应用中, 可针对显示区域维护一个二维结构体数组, 称为掩码表。图 2 为本 发明方法实施例中的掩码表示意图。 如图 2 所示, 假设显示区域的大小为 4×4, 掩码表中的 每个元素用于记录两个内容, 一是记录其对应的格子是否被占用, 如果被占用, 则记为 1, 否 则记为 0, 二是记录占用格子的模块的内存地址 ( 每个模块的内存地址都是唯一的 ), 当格 子没有被占用时, 记为 NULL ; 如图 2 所示, 有四个格子被占用, 占用这四个格式的模块的内 存地址为 0x100。这样, 通过查询掩码表即可确定出移动后的模块 X 是否和其它模块存在重叠部 分, 并可知道和哪个模块发生了重叠。
步骤 14 : 将移动后的状态作为移动结果, 结束流程。
步骤 15 : 将和模块 X 存在重叠部分的模块确定为阻挡模块, 并将模块 X 恢复原位 后与阻挡模块交换位置。
本步骤中, 将模块 X 恢复原位后, 首先确定包含模块 X 以及阻挡模块的全部区域的 最小包络矩形区域, 然后, 以该最小包络矩形区域中平行于模块 X 的移动方向的两条边的 中点连接线为轴, 将该最小包络矩形区域进行镜像翻转。
下面通过具体示例对步骤 11 ~ 15 作进一步地说明 :
图 3 为本发明方法实施例中的显示区域示意图。如图 3 所示, 假设显示区域的大 小为 4×4, 其中共包括 4 个模块, 分别为模块 1、 模块 2、 模块 3 和模块 4, 模块 2 为待移动图 标对应的模块。
图 4 为本发明方法实施例中将待移动图标对应的模块沿移动方向移动一个单位 ( 即一个格子 ) 后的示意图。如图 4 所示, 移动后的模块 2 将和模块 4 存在重叠部分, 那么 模块 4 即为阻挡模块 ( 在实际应用中, 阻挡模块的个数可能为多个, 此处以 1 个为例 )。 图 5 为本发明方法实施例中确定出的最小包络矩形区域的示意图。
图 6 为本发明方法实施例中将最小包络矩形区域进行镜像翻转后的示意图。如图 6 所示, 模块 4 和模块 2 的位置实现了互换 ( 省略了其它模块 )。
步骤 16 : 确定是否能够正确安置除模块 X 和阻挡模块以外的所有其它模块, 如果 是, 则执行步骤 17, 否则, 执行步骤 18。
本步骤中, 确定是否能够将所有其它模块均安置在模块 X 和阻挡模块所占区域以 外的区域 ( 即图 6 所示空白区域 ), 且任意两个模块之间均不存在重叠部分, 如果是, 则执行 步骤 17, 否则, 执行步骤 18。
步骤 17 : 将安置后的状态作为移动结果, 然后结束流程。
步骤 18 : 确定模块 X 是否可在移动方向上继续移动, 如果否, 则移动失败, 结束流 程, 否则, 执行步骤 19。
本步骤中, 针对镜像翻转后的结果进行处理。如果继续移动则会超出显示区域的 范围, 那么则说明模块 X 无法继续移动。
步骤 19 : 将模块 X 在移动方向上移动一个单位。
步骤 110 : 确定是否能够正确安置除模块 X 以外的所有其它模块, 如果是, 则执行 步骤 17, 否则, 重复执行步骤 18。
本步骤中, 确定是否能够将所有其它模块均安置在模块 X 所占区域以外的区域, 且任意两个模块之间均不存在重叠部分, 如果是, 则执行步骤 17, 否则, 重复执行步骤 18, 即继续移动模块 X, 直到不能移动为止。
本实施例中, 在安置各模块时, 可遵循一定的原则, 比如 : 尽量不改变各模块在模 块 X 的移动方向的垂直方向上的坐标, 这样, 如果对于所有其它模块存在多种安置方式, 则 首先确定其中是否存在能够不改变所有其它模块在模块 X 的移动方向的垂直方向上的坐 标的方式, 如果是, 则按照该方式对所有其它模块进行安置 ; 否则, 选择对各模块在模块 X 移动方向的垂直方向上的坐标改变最小的方式对所有其它模块进行安置。
另外, 在实际应用中, 可为各模块按照优先级由高到低的顺序进行排序, 优先安置 优先级高的模块。比如, 按照各模块在模块 X 的移动方向上的长度由大到小的顺序对各模 块进行排序, 对于在模块 X 的移动方向上的长度相同的模块, 进一步按照在模块 X 的移动方 向的垂直方向上的长度由大到小的顺序进行排序。
至此, 即完成了关于图 1 所示方法实施例的介绍。后续, 如果用户希望继续移动图 标, 重复上述过程即可。
本发明同时提供了一种图标移动装置。图 7 为本发明图标移动装置实施例的组成 结构示意图。如图 7 所示, 包括 : 第一处理单元 71、 第二处理单元 72 和第三处理单元 73 ;
第一处理单元 71, 用于确定待移动图标对应的模块 X 和移动方向 ;
第二处理单元 72, 用于将模块 X 沿移动方向移动一个单位, 并确定模块 X 是否和其 它模块存在重叠部分, 如果否, 则将移动后的状态作为移动结果, 结束处理 ; 否则, 将和模块 X 存在重叠部分的模块确定为阻挡模块, 将模块 X 恢复原位后与阻挡模块交换位置, 并确定 是否能够正确安置除模块 X 和阻挡模块以外的所有其它模块, 如果是, 则将安置后的状态 作为移动结果, 结束处理, 否则, 通知第三处理单元 73 执行自身功能 ;
第三处理单元 73, 用于确定模块 X 是否可在移动方向上继续移动, 如果否, 则移动 失败, 结束处理 ; 否则, 将模块 X 在移动方向上移动一个单位, 并确定是否能够正确安置除 模块 X 以外的所有其它模块, 如果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 重 复执行自身功能。 其中, 第二处理单元 72 中可具体包括 ( 为简化附图, 未图示 ) : 第一处理子单元和 第二处理子单元 ;
第一处理子单元, 用于将模块 X 沿移动方向移动一个单位, 并确定模块 X 是否和其 它模块存在重叠部分, 如果否, 则将移动后的状态作为移动结果, 结束处理 ; 否则, 通知第二 处理子单元执行自身功能 ;
第二处理子单元, 用于将和沿移动方向移动一个单位后的模块 X 存在重叠部分的 模块确定为阻挡模块, 并将模块 X 恢复原位, 确定包含模块 X 和阻挡模块的全部区域的最小 包络矩形区域, 以该最小包络矩形区域中平行于模块 X 的移动方向的两条边的中点连接线 为轴, 将该最小包络矩形区域进行镜像翻转 ; 并确定是否能够将除模块 X 和阻挡模块以外 的所有其它模块均安置在模块 X 和阻挡模块所占区域以外的区域, 且任意两个模块之间均 不存在重叠部分, 如果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 通知第三处理 单元 73 执行自身功能。
第三处理单元 73 中可具体包括 ( 为简化附图, 未图示 ) : 第三处理子单元和第四 处理子单元 ;
第三处理子单元, 用于确定模块 X 是否可在移动方向上继续移动, 如果否, 则移动 失败, 结束处理 ; 否则, 通知第四处理子单元执行自身功能 ;
第四处理子单元, 用于将模块 X 在移动方向上移动一个单位, 并确定是否能够将 除模块 X 以外的所有其它模块均安置在模块 X 所占区域以外的区域, 且任意两个模块之间 均不存在重叠部分, 如果是, 则将安置后的状态作为移动结果, 结束处理, 否则, 通知第三处 理子单元重复执行自身功能。
图 7 所示装置实施例的具体工作流程请参照图 1 所示方法实施例中的相应说明,
此处不再赘述。
总之, 采用本发明的技术方案, 能够提升用户体验。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。