HarmonyOS-鸿蒙app开发 —基于java_智能穿戴_旋转表冠交互UI组件支持旋转表冠

HarmonyOS-鸿蒙app开发 —基于java_智能穿戴_旋转表冠交互UI组件支持旋转表冠

不同的组件会根据旋转表冠的操作呈现不同的效果,组件响应旋转表冠事件被抽象为滑动事件的处理。

当前旋转表冠支持的组件有:

表1 旋转表冠支持的组件

组件名称

说明

ListContainer

用来呈现连续、多行数据的组件,包含一系列相同类型的列表项。

ScrollView

一种带滚动功能的组件,它采用滑动的方式在有限的区域内显示更多的内容。

Picker(TimePicker/DatePicker)

滑动选择器,允许用户从预定义范围中进行选择。当前支持时间选择器、日期选择器。

PageSlider

用于页面之间切换的组件,它通过响应旋转表冠事件完成页面间的切换。

组件支持随旋转表冠操作时触发震动效果。旋转表冠预设结束处理机制,用户不再旋转表冠后100ms进入尾处理流程,尾处理流程主要用于完成惯性回弹,限位吸附等效果。

接口说明

表2 Component类相关接口

名称

描述

setBindStateChangedListener

设置组件绑定状态的侦听器。

setTouchFocusable

设置组件在触摸模式下是否可以接收对焦。

requestFocus

请求当前组件或其子组件之一的焦点。

setRotationEventListener

为组件中的旋转事件注册侦听器。

setRotationSensitivity

设置表冠的旋转灵敏度。

setVibrationEffectEnabled

设置是否启用振动效果。

UI组件自动支持旋转表冠操作

实现UI组件随表冠的旋转而滑动,需要UI组件当前是获焦状态。对于支持旋转表冠的组件,要实现进入页面中某个UI组件自动支持旋转表冠操作,需要在其绑定到Window触发的回调中将控件设为可获焦并且申请焦点。

以Picker组件为例,示例代码如下:

Picker numberPicker = new Picker(getContext());

numberPicker.setBindStateChangedListener(new BindStateChangedListener() {

@Override

public void onComponentBoundToWindow(Component component) {

component.setTouchFocusable(true);

component.requestFocus();

}

@Override

public void onComponentUnboundFromWindow(Component component) {

}

});

自定义UI组件对旋转表冠的响应

开发者可以根据实际情况对组件响应旋转表冠事件进行自定义处理。在回调中通过返回的boolean值控制组件是否消费旋转事件,如果返回true,则表示消费旋转事件;返回false,框架内不再对该组件响应旋转事件做处理。

示例:

numberPicker.setRotationEventListener(new RotationEventListener() {

@Override

public boolean onRotationEvent(Component component, RotationEvent rotationEvent) {

return false;

}

});

灵敏度设置

当前系统有默认的灵敏度,开发者无需对组件进行旋转灵敏度的调整即可满足正常功能。

同时框架也为每个控件提供了高,低以及默认的灵敏度,示例:

numberPicker.setRotationSensitivity(Picker.ROTATION_SENSITIVITY_HIGH);

振动效果设置

UI组件支持随旋转表冠事件触发振动效果,支持范围及效果如下(其中端点振动效果振感强于非端点振动效果振感,振动强度依次为: haptic.crown.strength3> haptic.crown.strength2 > haptic.crown.strength1):

ScrollView能够每随表冠旋转移动的一定距离时触发震动效果,移动到触顶或触底时为haptic.crown.strength3,其他以单位移动举例触发haptic.crown.strength1。

ListContainer配置限位吸附模式(centralMode)时能够每随表冠旋转移动一个列表item项时触发震动效果,移动到非端点表项时为haptic.crown.strength1,移动到端点(item的首项和尾项)表项时为haptic.crown.strength3。配置为非吸附模式,效果同ScrollView。

Picker能够每随表冠旋转调整一个单位时触发震动效果,移动到非端点表项时为haptic.crown.strength2,移动到端点(最小值和最大值)时为haptic.crown.strength3。

PageSlider能够每随表冠旋转触发翻页时触发震动效果,移动到非端点页面时为haptic.crown.strength1,移动到端点页面(第一页和最后一页)时为haptic.crown.strength3。

组件默认开启旋转表冠的震动效果,同时支持组件级别的旋转表冠震动开关控制,示例:

numberPicker.setVibrationEffectEnabled(true);

🚀 如未找到文章请搜索栏搜素 | Ctrl+D收藏本站 | 联系邮箱:15810050733@qq.com