28.细解鸿蒙之元服务UX上架标准-可交互控件响应光标悬浮

161 阅读5分钟

细解鸿蒙之元服务UX上架标准-可交互控件响应光标悬浮

是否必须遵守:必须

标准项描述:

在应用或元服务的交互设计中,当光标悬浮在可交互控件上时,控件或光标提供相应视觉反馈是为了增强用户与应用之间的互动体验。这一过程涉及到多个方面的细节和考量,具体如下:

视觉反馈的作用

提示用户操作:当光标悬浮在可交互控件上时,视觉反馈能够向用户传达该控件可操作的信息。例如,当光标悬停在按钮上时,按钮可能会改变颜色、出现阴影或其他视觉效果,告知用户这是一个可点击的按钮。这种反馈帮助用户明确当前操作对象,引导用户进行下一步操作。
增强交互体验:视觉反馈使交互过程更加直观和流畅。它能够让用户感受到与应用的互动,增加用户对应用的参与感。例如,当光标悬停在滑动条上时,滑动条可能会以动态方式显示当前位置,用户可以通过这种视觉反馈更好地控制滑动条的操作,提高交互的准确性和效率。
突出控件状态:通过提供视觉反馈,可交互控件的状态得以清晰呈现。例如,当光标悬浮在一个复选框上时,复选框可能会显示为选中状态,或者在其周围出现特殊的视觉效果,表明该控件处于可操作状态。这种反馈有助于用户了解控件的当前状态,避免误操作。
引导用户注意力:视觉反馈能够吸引用户的注意力,使用户更加关注当前操作的控件。例如,当光标悬停在一个链接上时,链接可能会以特定颜色或动画效果显示,引导用户点击链接。这种反馈帮助用户在复杂的界面中快速定位到重要的交互元素,提高用户的操作效率。

视觉反馈的类型

颜色变化:控件可以通过改变颜色来提供视觉反馈。例如,当光标悬停在按钮上时,按钮的颜色可能会从原本的颜色变为另一种颜色,以突出其可点击性。这种颜色变化可以吸引用户的注意力,并使按钮在视觉上更加醒目。
形状变化:控件的形状也可以发生改变来提供视觉反馈。例如,当光标悬停在一个图标上时,图标可能会从原本的形状变为另一种形状,或者在其周围出现一些动态效果,如旋转、缩放等。这种形状变化可以增强控件的视觉效果,使用户更容易识别和操作。
动画效果:动画效果是一种常见的视觉反馈方式。例如,当光标悬停在一个菜单上时,菜单可能会以动画形式展开,显示出更多的选项。动画效果可以使交互过程更加生动有趣,提高用户的体验。
声音反馈:除了视觉反馈,声音也可以作为一种反馈方式。例如,当光标悬停在一个按钮上时,可能会发出点击声音,这种声音反馈可以增强用户对操作的感知,使操作更加直观。

视觉反馈的实现方式

软件编程:通过编写代码来实现视觉反馈。例如,在应用程序中,可以使用编程语言来控制控件的颜色、形状、动画等属性,当光标悬停在控件上时,相应的代码会被触发,从而实现视觉反馈。
设计工具:使用专业的设计工具来创建视觉反馈。例如,在图形设计软件中,可以设计出各种形状、颜色、动画等效果,然后将这些效果应用到应用程序中。
硬件设备:一些硬件设备也可以提供视觉反馈。例如,鼠标、键盘等设备可以通过不同的方式来显示光标悬停在控件上时的视觉反馈。

视觉反馈的重要性

提高用户满意度:提供良好的视觉反馈可以使用户在使用应用时感到更加满意。用户能够更加清晰地了解操作对象,减少误操作,提高操作效率,从而增强用户对应用的好感度。
增强用户体验:视觉反馈能够使交互过程更加直观和流畅,提高用户的体验。用户可以通过视觉反馈更好地理解应用的功能和操作方式,从而更加深入地参与到应用的交互中。
促进应用的发展:良好的视觉反馈可以吸引用户的注意力,提高用户对应用的关注度。这有助于应用在市场上获得更多的用户和口碑,促进应用的发展。 --javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

RichEditor(this.options)
    .onReady(() => {
        this.controller.addTextSpan('组件设置了自定义菜单,长按可触发。', {
            style: {
                fontColor: Color.Black,
                fontSize: 18
            }
        })
    })
    .bindSelectionMenu(RichEditorSpanType.TEXT, this.SystemMenu, ResponseType.LongPress, {
        onDisappear: () => {
            this.sliderShow = false
        }
    })
    .width(300)
    .height(300)

@Builder
SystemMenu() {
    Column() {
            Menu() {
                    if (this.controller) {
                        MenuItemGroup() {
                            MenuItem({
                                startIcon: this.theme.cutIcon,
                                content: "剪切",
                                labelInfo: "Ctrl+X",
                            })
                            MenuItem({
                                startIcon: this.theme.copyIcon,
                                content: "复制",
                                labelInfo: "Ctrl+C"
                            })
                            MenuItem({
                                startIcon: this.theme.pasteIcon,
                                content: "粘贴",
                                labelInfo: "Ctrl+V"
                            })
                        }
                    }
                }
                .radius(this.theme.containerBorderRadius)
                .clip(true)
                .backgroundColor(Color.White)
                .width(this.theme.defaultMenuWidth)
        }
        .width(this.theme.defaultMenuWidth)
}

PS:实际项目中如有出入,请告知博主,博主会第一时间修改得哇~