刚学 HarmonyOS不久,对着开发者文档学习以及视频了一段时间,目前还是针对控件以及布局的学习,以下内容描述内容可能与开发者文档描述有差异,学习到滑杆控件时发现文档没有具体描述,所以不懂具体属性以及使用,网络上难以找到具体文献,游荡在鸿蒙开源项目组件库里终于发现了类似的内容,结合内容也终于实现了侦听(真是累死小白),具体实现如下:
HarmonyOS Slider控件侦听,主要使用的是setValueChangedListener,此方法提供了onProgressUpdated,onTouchStart,onTouchEnd三个重写方法,看方法也能知道每个方法的作用,具体就不多说,可以尝试,以下是实现案例:
Slider_layout.xml布局:
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">
<Slider
ohos:margin="40px"
ohos:height="50vp"
ohos:width="400vp"
ohos:id="$+id:sld1"
ohos:orientation="horizontal"
ohos:min="0"
ohos:max="100"
ohos:progress="40"
ohos:background_element="$graphic:background_slider"
ohos:progress_element="#6E6E6E"/>
<Text
ohos:left_margin="40px"
ohos:height="match_content"
ohos:width="match_content"
ohos:text_size="30fp"
ohos:text_color="#444"
ohos:text_font="sans-serif"
ohos:id="$+id:Stxt1"
ohos:text="初始值:40"/>
</DirectionalLayout>
背景资源:
background_slider.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="rectangle">
<solid ohos:color="#5882FA"/>
<corners ohos:radius="40"/>
<stroke ohos:width="1vp" ohos:color="#848484"/>
</shape>
SliderSlice:
public class SliderSlice extends AbilitySlice {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_slider_layout);
Slider sdel =(Slider)findComponentById(ResourceTable.Id_sld1);
Text t1 = (Text) findComponentById(ResourceTable.Id_Stxt1);
if (sdel!=null){
//监听当前数值的变化
sdel.setValueChangedListener(new Slider.ValueChangedListener() {
@Override
public void onProgressUpdated(Slider slider, int i, boolean b) {
if (t1!=null){
t1.setText("当前值:"+i);
if (i>70){
new ToastDialog(getContext())
.setText("超出安全数值")
.show();
}
}
}
@Override
public void onTouchStart(Slider slider) {
}
@Override
public void onTouchEnd(Slider slider) {
}
});
}
}
}
不要问为什么注释介么少(我懒啊)。
接下来是实现效果:
滑动滑杆时数值也会实时变化。