移动规则
WARNING
此处以源代码为准!
1.寻找该 EPGItem 所在的 EPGGroup 下所有的同级 EPGItem | EPGGroup(称为 GroupChildren)(此时 EPGGroup 也可以当做一个 EPGItem 来计算。如果该元素没有 EPGGroup ,即顶层元素,则会以根节点为虚拟 EPGGroup 来寻找子元素)。
2.根据方向,寻找所有符合条件的 item ,将这些 item 分为 在非移动方向上与原焦点元素有重合 与 在移动方向与非移动方向上均与原焦点元素无重合 两类,其余 item 抛弃。
3.若 在非移动方向上与原焦点元素有重合 类中存在符合的元素,则在之中选择移动方向最近的元素作为移动对象。否则则使用 在移动方向与非移动方向上均与原焦点元素无重合 类中移动方向上与原焦点元素最近的元素作为移动对象。
4.若以上两类均无可用元素,则会寻找该元素的上级 EPGGroup 作为一个新的 item ,来寻找其上级 EPGGroup 中是否存在目标移动对象,以此类推。
5.若目标为 EPGItem ,则直接移动。若目标为 EPGGroup ,则移动到 Group 内部带有 default 标识的目标或第一个可用 item。