移动规则
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。