鸿蒙开发(10)---Switch组件

简介: 鸿蒙开发(10)---Switch组件

Switch组件


对于这个组件,Android开发并没有直接提供,但IOS开发中是有UISwitch的。鸿蒙的Switch组件与它的效果差不多。


本篇,将详细介绍Switch组件的使用规则。


创建Switch组件

首先,我们通过XML布局文件来创建一个Switch组件。示例代码如下:

<Switch
    ohos:id="$+id:test_switch"
    ohos:layout_alignment="horizontal_center"
    ohos:top_margin="20vp"
    ohos:height="60vp"
    ohos:width="120vp"
    ohos:text_state_on="开启"
    ohos:text_state_off="关闭"
    ohos:text_size="20vp"
    ohos:marked="false"/>


运行之后,交互效果如下:

这里,有几个属性需要注意:

属性

含义
text_state_on 开启按钮时的文字
text_state_off 关闭按钮时的文字
marked 默认按钮是开启还是关闭
track_element 轨迹样式
thumb_element thumb样式
check_element 状态标志样式


用代码设置其交互样式

这里,我们可以直接通过graphic的shape文件设置后面这3个样式属性。但因为这个组件功能简单,我们来详细通过代码实现样式交互。


示例如下:

public class MainAbilitySlice extends AbilitySlice{
    private Switch aSwitch;
    HiLogLabel label=new HiLogLabel(HiLog.LOG_APP, 0x00201, "TAG");
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        this.aSwitch=(Switch)findComponentById(ResourceTable.Id_test_switch);
        // 开启状态下滑块的样式
        ShapeElement elementThumbOn = new ShapeElement();
        elementThumbOn.setShape(ShapeElement.OVAL);
        elementThumbOn.setRgbColor(RgbColor.fromArgbInt(0xFF1E90FF));
        elementThumbOn.setCornerRadius(50);
        // 关闭状态下滑块的样式
        ShapeElement elementThumbOff = new ShapeElement();
        elementThumbOff.setShape(ShapeElement.OVAL);
        elementThumbOff.setRgbColor(RgbColor.fromArgbInt(0xFFFFFFFF));
        elementThumbOff.setCornerRadius(50);
        // 开启状态下轨迹样式
        ShapeElement elementTrackOn = new ShapeElement();
        elementTrackOn.setShape(ShapeElement.RECTANGLE);
        elementTrackOn.setRgbColor(RgbColor.fromArgbInt(0xFF87CEFA));
        elementTrackOn.setCornerRadius(50);
        // 关闭状态下轨迹样式
        ShapeElement elementTrackOff = new ShapeElement();
        elementTrackOff.setShape(ShapeElement.RECTANGLE);
        elementTrackOff.setRgbColor(RgbColor.fromArgbInt(0xFF808080));
        elementTrackOff.setCornerRadius(50);
        //设置轨迹交互样式
        this.aSwitch.setTrackElement(trackElementInit(elementTrackOn, elementTrackOff));
        //设置滑块交互样式
        this.aSwitch.setThumbElement(thumbElementInit(elementThumbOn, elementThumbOff));
    }
    private StateElement trackElementInit(ShapeElement on, ShapeElement off){
        StateElement trackElement = new StateElement();
        trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);
        trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);
        return trackElement;
    }
    private StateElement thumbElementInit(ShapeElement on, ShapeElement off) {
        StateElement thumbElement = new StateElement();
        thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);
        thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);
        return thumbElement;
    }
}


运行之后,效果如首图所示。


监听事件

Switch组件大多用于App的设置当中,一般都只有两个选择。所以,我们需要监听其到底是开启还是关闭。


示例代码如下:

this.aSwitch.setCheckedStateChangedListener(new AbsButton.CheckedStateChangedListener() {
    // 回调处理Switch状态改变事件
    @Override
    public void onCheckedChanged(AbsButton button, boolean isChecked) {
    }
});


这里的isChecked值,就能获取到Switch组件的选择状态,然后再做进一步的操作。

相关文章
|
3天前
|
开发者
鸿蒙开发:了解分割线
在实际的开发中,如果自带的分割线能够满足我们的需求,以自身的分割线属性为主,如果不满足,我们可以使用组件进行绘制。
59 16
鸿蒙开发:了解分割线
|
5天前
|
JSON 数据安全/隐私保护 数据格式
鸿蒙开发,远场通信服务rcp拦截器问题
关于rcp的拦截器问题,最重要的就是会话复用的时候,如果Request对象中有需要的参数,就直接用Request中的,而不是使用session中的。
鸿蒙开发,远场通信服务rcp拦截器问题
|
7天前
|
开发框架 JavaScript 前端开发
鸿蒙开发:什么是ArkTs?
本小结主要简单介绍了ArkTs语言的相关知识,都是一些概念性质的内容,大家作为一个了解即可
101 61
|
6天前
|
存储
鸿蒙开发:远场通信服务rcp会话问题
总体来说,问题倒不是很大,解决起来也不是很麻烦,所以啊,老铁们,在实际的开发中,对于一些官方文档,还是建议多看,这样可以提前避免后续的不必要麻烦。
鸿蒙开发:远场通信服务rcp会话问题
|
8天前
|
存储 Java 编译器
鸿蒙开发:ArkTs数据类型
最后一点是,ArkTS不支持any和unknown类型,需要显式指定具体类型,否则会报异常,具体原因是,这是ArkTS的特性之一,那就是使用静态类型;如果程序采用静态类型,即所有类型在编译时都是已知的,那么开发者就能够容易理解代码中使用了哪些数据结构。同时,由于所有类型在程序实际运行前都是已知的,编译器可以提前验证代码的正确性,从而可以减少运行时的类型检查,有助于提升性能。
鸿蒙开发:ArkTs数据类型
|
4天前
|
容器
鸿蒙开发:填充剩余空间
关于占满剩余的空间,如果权重能够解决,还是以权重为主,因为Blank的使用必须父组件的宽高有值,否则就会不生效,当然了,在实际的开发中,还是具体问题具体分析,使用恰当的方式解决为主。
鸿蒙开发:填充剩余空间
|
7天前
|
定位技术 数据安全/隐私保护
鸿蒙开发:权限授权封装
关于权限,算上本章内容已经阐述了四个章节了,从相关的概念到,权限管理的授权方式,再到申请权限,直至最后的权限工具类封装,基本上涵盖了七七八八,希望可以帮助到大家。
鸿蒙开发:权限授权封装
|
7天前
|
数据处理
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
63 19
|
5天前
|
存储 编解码 资源调度
鸿蒙相机开发实战:从设备适配到性能调优 —— 我的 ArkTS 录像功能落地手记(API 15)
本文分享鸿蒙相机开发经验,从环境准备到核心逻辑实现,涵盖权限声明、模块导入、Surface关联与分辨率匹配,再到录制控制及设备适配法则。通过实战案例解析,如旋转补偿、动态帧率调节和编解码优化,帮助开发者掌握功能实现、设备适配与体验设计三大要点,减少开发坑点。适合鸿蒙新手及希望深化硬件交互能力的工程师参考收藏。
30 2
|
8天前
|
数据安全/隐私保护
鸿蒙开发:申请授权权限
还是那句话,在申请权限的时候,应当严格遵循最小权限原则,结合动态申请和清晰的用户引导,避免给用户带来不好体验,同样,遵循,在使用到权限的时候再去申请,切记,过前进行申请。

热门文章

最新文章