步骤 1 - 浏览应用程序屏幕¶
在此步骤中,您将学习如何为应用程序屏幕创建导航。您可以使用触摸和按键输入来使用户导航应用程序屏幕。
获取教程¶
要获取本教程,请在 Kanzi Studio Quick Start 窗口中点击 Examples。在 UI navigation 教程旁边,点击 。
Kanzi Studio 会将教程下载到 <KanziWorkspace>/Tutorials 目录。您可以找到:
位于
<KanziWorkspace>/Tutorials/UI navigation/Start/Tool_project目录中的教程起点工程。位于
<KanziWorkspace>/Tutorials/UI navigation/Completed目录中的已完成教程。
起始项目的内容¶
起点工程包含您完成本教程所需的内容:
MainScreen Activity 预设包含:
显示导航按钮菜单的 NavigationBar 切换按钮组。
在 NavigationBar 中,切换按钮是 NavigationButton 预设的实例。NavigationButton 预设使用状态管理器,根据切换按钮的切换状态设置其外观。
在本教程中,您使用这些切换按钮来激活应用程序屏幕。
ApplicationScreens 独占活动主机包含每个代表一个应用程序屏幕的活动:
Home 包含一个温度滑块。
Media 包含专辑、播放列表和电台的列表。
Maps 包含一个静态图像。
Settings 包含一个设置菜单。
在本教程中,您将学习如何使用触摸和按键输入,使用户能够在这些屏幕之间移动并与每个屏幕中的 UI 元素进行交互。
AlbumItem、PlaylistItem、RadioItem 和 SettingsItem 预设是不同类型列表中项目的模板。
在 Media Activity 预设中,Albums、Playlists 和 Radio 是 MediaList 预设的实例。MediaList 包含一个可自定义的标题和一个 Grid List Box 节点,该节点显示一个带有可自定义项目模板和项目来源的列表。Media Activity 从数据源获取列表项。
在 Settings Activity 预设中,SettingsMenu 中的列表项是 SettingsItem 预设的实例。
Library > State Managers > List State Manager 根据焦点状态设置节点的背景画刷。
在本教程的第2步中,使用此状态管理器。
使用触摸输入导航应用程序屏幕。¶
在本节中,您为应用程序屏幕创建触摸导航。您可以通过点击导航栏中的按钮,使用户能够在应用程序屏幕之间导航。
要使用触摸输入导航应用程序屏幕:
在 Kanzi Studio Quick Start 窗口中,点击 Examples。在 UI navigation 教程旁边,点击 Open 并选择 Start project。
创建一个属性类型来控制哪个 Activity 是活动的:
在 Activity Browser 中,右键单击 ApplicationScreens Exclusive Activity Host,然后选择 Create Controller Property > Enum。
独占活动主机使用 Controller Property 来设置和控制在该独占活动主机中哪个活动是活动的。
将属性命名为 ApplicationScreens.ApplicationScreen,然后单击 OK。
Kanzi Studio:
在 Library > Property Types 中创建 UInavigation.ActivityProperty.ApplicationScreens.ApplicationScreen 属性类型,其枚举键与 ApplicationScreens Exclusive Activity Host 中的活动名称相匹配。
在 ApplicationScreens 独占活动主机中,添加 UInavigation.ActivityProperty.ApplicationScreens.ApplicationScreen 属性并将 Controller Property 属性设置为该属性。
在 Prefabs 中,选择 MainScreen > Dock Layout 2D > NavigationBar 切换按钮组。在 Properties 中,单击 + Add Binding,并在 Binding Editor 中,设置:
Binding Mode 到 Two way
Property 到 Toggle Button Group > Current Button Index
使用 Current Button Index 属性访问在 NavigationBar 切换按钮组中被切换的切换按钮的索引。
在 Prefabs 中,选择 MainScreen > Dock Layout 2D > ApplicationScreens 节点。从 Properties 中,将 UInavigation.ActivityProperty.ApplicationScreens.ApplicationScreen 属性拖到 Binding Editor 上,并将其放在 Source 字段上。
通过这种方式,您将 Source 设置为
{@../ApplicationScreens/UInavigation.ActivityProperty.ApplicationScreens.ApplicationScreen}
单击 Save。
此绑定在切换的菜单按钮和 ApplicationScreens Activity Host 中的活动 Activity 之间创建了双向连接。
现在当您:
在 Preview 中,单击导航菜单按钮,Kanzi 激活该应用程序屏幕的活动。
在 Activity Browser 激活应用程序屏幕的活动时,Kanzi 选择相应的导航菜单按钮。
在应用程序启动时设置焦点¶
在本节中,您设置应用程序启动时接收键焦点的节点。
要接收按键输入,节点必须是可聚焦的。可聚焦节点启用了 Focusable 属性。交互控制节点,例如 Slider 和 Button 节点,默认情况下启用了 Focusable 属性。
在本教程项目中,应用程序屏幕是 Activities。Activity 节点默认情况下是焦点范围,并处理键焦点和键输入。焦点范围有助于处理键导航。当键焦点移动到焦点范围节点时,该焦点范围将焦点转发到其第一个可聚焦的子节点。
要在应用程序启动时设置键焦点:
在 Prefabs 中,选择 MainScreen > Dock Layout 2D > ApplicationScreens 独占活动主机。
在 Properties 中,添加 Focus On Activating Activity 属性并将其设置为 Always。
通过这种方式,您将关键焦点设置为应用程序启动时激活的 Home Activity。
当 Home 活动激活时,Kanzi 将焦点移动到该活动。Home 活动将焦点转移到其唯一可聚焦的节点,即 Slider 节点。Slider 节点成为关键焦点节点,接收键输入。
现在,当您选择 Preview 窗口时,您可以使用这些键通过主屏幕上的滑块来调整温度:
使用 ↑ (向上)和 ↓ (向下)来移动旋钮。
Home 将滑块旋钮移动到轨道底部。
End 将滑块旋钮移动到轨道顶部。
默认情况下,Slider 节点处理来自这些键的输入。
使用按键输入导航应用程序屏幕。¶
在本节中,您将为应用程序屏幕创建关键导航。您可以使用 L 和 R 键使用户能够在应用程序屏幕之间导航。
要使用按键输入导航应用程序屏幕:
在 Prefabs 中,选择 Maps > Image 节点。在 Properties 中,添加 Focus > Focusable 属性。
Maps 活动包含一个模型地图图像。要为该活动启用键导航,您需要使图像可聚焦。
Media 和 Settings 屏幕包含默认情况下可聚焦的 Button 节点。这意味着现在所有应用程序屏幕都启用了按键导航。
在 Prefabs 中,选择 MainScreen > Dock Layout 2D > ApplicationScreens 独占活动主机。在 Node Components 中,按 Alt 并右键单击 Input Manipulators 并选择 Navigation Manipulator。
使用 Navigation Manipulator 设置用户可以用来在您的应用程序中导航到不同方向的键。
在 Navigation Manipulator 中,添加并设置:
Left Navigation Key 到 L
Right Navigation Key 到 R
通过这种方式,您可以设置 Navigation Manipulator 来响应 L 和 R 键的按下。
启用向左导航:
在 Node Components 中,按 Alt 并右键单击 Triggers,选择 Message Trigger > Key Input > Key Navigation Started,并将其命名为 Left Navigation。
当用户按下您在 Navigation Manipulator 中设置的任何导航键时,Key Navigation Started 触发器将被激活。
在 Left Navigation 触发器中,右键单击 Conditions,选择 Trigger Condition,并在条件中设置:
A
Type of A 到 Message argument
Message Argument 到 Navigation Direction
Operation 到 =
B
Type of B 到 Fixed
Fixed Value 到 Left
在此条件下,您将 Left Navigation 触发器设置为仅在用户按下 L 键时触发,该键在 Navigation Manipulator 中被设置为 Left Navigation Key。
在 Left Navigation 触发器中,按 Alt 并右键单击 Actions 并选择 Dispatch Message Action > Exclusive Activity Host > Navigate To Previous Activity。
通过此操作,您将 ApplicationScreens 活动主机设置为激活 ApplicationScreens 活动主机中的上一个活动。
在 Navigate To Previous Activity 操作中,将 Loop Activity 属性设置为启用。
通过这种方式,您将 ApplicationScreens 活动主机设置为在第一个活动处于活动状态时,当 Left Navigation 触发器触发时激活其最后一个活动。
启用向右导航:
在 Node Components > Triggers 中,创建一个 Key Input > Key Navigation Started 触发器,并将其命名为 Right Navigation。
从 Left Navigation 触发器中,将触发条件复制到 Right Navigation 触发器。在条件中,将 Fixed Value 设置为 Right。
在此条件下,您将 Right Navigation 触发器设置为当用户按下 R 键时触发,该键在 Navigation Manipulator 中被设置为 Right Navigation Key。
在 Right Navigation 触发器中,按 Alt 并右键单击 Actions 并选择 Dispatch Message Action > Exclusive Activity Host > Navigate To Next Activity。在操作中,将 Loop Activity 属性设置为启用。
通过此操作,您将 ApplicationScreens 活动主机设置为激活 ApplicationScreens 活动主机中的下一个活动。通过启用 Loop Activity 属性,您将 ApplicationScreens 活动主机设置为在最后一个活动处于活动状态时,当 Right Navigation 触发器触发时激活其第一个活动。
现在,当您选择 Preview 窗口并按下:
使用 L 键,您可以向左导航浏览应用程序屏幕。
使用 R 键,您可以向右浏览应用程序屏幕。
另请参阅¶
要了解有关如何使用 Activity Browser 的更多信息,请参阅 使用 Activity Browser。
要了解有关活动系统的更多信息,请参阅 活动。
要了解有关使用绑定的更多信息,请参阅 使用绑定 和 Bindings expressions 参考。
要详细了解关于滑块的使用,请参阅 使用 Slider 节点。
要了解有关在 Kanzi 中处理用户输入的更多信息,请参阅 处理用户输入。
要详细了解有关触发器和动作的信息,请参阅 触发器 (Triggers)。
要了解有关使用 List Box 节点的更多信息,请参阅 列表框节点 (List Box nodes)。