0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

#深入浅出学习eTs#(十)蓝药丸还是红药丸

Harmony&嵌入式学习 2023-05-17 15:07 次阅读

本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)

一、需求分析

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


我们本章的内容选择致敬黑客帝国,如果你处于主角的立场,你会选择蓝药丸还是红药丸呢?本章节来构建一个选择器,让大家自己选择接受现实还是沉入虚拟!

  • 通过开关进行状态选择
  • 按下同意签署协议的声明
  • 对不同的选择有不同的UI效果

二、控件介绍

主要使用到的是开关控件

Toggle官方文档

组件提供勾选框样式、状态按钮样式及开关样式。

说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

interface ToggleInterface {
  (options: { type: ToggleType; isOn?: boolean }): ToggleAttribute;
}

复制

参数 参数类型 必填 默认值 参数描述
type ToggleType - 开关类型。
isOn boolean false 开关是否打开,true:打开,false:关闭。

属性

名称 参数 默认值 参数描述
selectedColor Color - 设置组件打开状态的背景颜色。
switchPointColor Color - 设置Switch类型的圆形滑块颜色。 > 说明: > 仅对type为ToggleType.Switch生效。

事件

名称 功能描述
onChange(callback: (isOn: boolean) => void) 开关状态切换时触发该事件。

通过对“改变”事件内的程序编写,即可实现其它的互动,简单样例如下图

@Entry @Component struct ToggleTest {
  build() {
    Column() {
      Toggle({type: ToggleType.Switch})
    }
    .width('100%')
    .height('100%')
  }
}

复制

效果如下:

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

三、UI设计

(1)图片框放置

本内容我们首先要搭建一个基础框架,还是使用我们的老样子布局,在最上面先放一个图片

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

相同的操作,还是先将图片放到我们目录这个位置,这样就能调用资源文件了

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


来放置一个image控件,这里引入一个新概念,可以使用百分比的形式来设置控件(区别于之前使用像素点)

        Image($r("app.media.1"))
          .width('100%')				//使用百分比进行大小调整
          .height(240)

复制

(2)标签放置

UI界面上肯定是要放置一些提示用语的,比如说这个内容是想要干什么用,这里放置一个UI提示内容

        Text('请选择你的药丸')
          .fontSize(30)
          .margin({top:10})
          .backgroundColor(Color.Gray)
          .fontColor(Color.White)

复制

这里使用了字体大小、边缘间距、背景颜色、字体颜色四个属性

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

(3)开关放置

我们需要放置两个开关,即可以选择两种药丸,实现选择

        Row()
        {
          Toggle({type: ToggleType.Switch})
            .selectedColor(Color.Red)
            .switchPointColor(Color.Red)
            .onChange((isOn: boolean) => {
              console.info('Component status:' + isOn)
            })
          Text("红色")
            .fontSize(30)
            .fontColor(Color.Red)
          Toggle({type: ToggleType.Switch})
            .selectedColor(Color.Blue)
            .switchPointColor(Color.Blue)
            .onChange((isOn: boolean) => {
              console.info('Component status:' + isOn)
            })
          Text("蓝色")
            .fontSize(30)
            .fontColor(Color.Blue)
        }

复制

因为药丸想横向摆放,需要放置一个Row容器

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

同时预置了选择触发事件,之后备用,此时已经可以进行选择操作

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

(4)同意协议

同意协议是使用的开关的另一个类型版本

        Row()
        {
          Toggle({type: ToggleType.Checkbox})
            .size({ width: 28, height: 28 })
          Text('我同意选择,绝不后悔!')
            .fontSize(20)
        }

复制

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区

因为上下间距太短,这里扯入了一个新的控件:Blank()

        Blank()
          .height(150)
        Row()
        {
          Toggle({type: ToggleType.Checkbox})
            .size({ width: 28, height: 28 })
          Text('我同意选择,绝不后悔!')
            .fontSize(20)
        }

复制

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


这样更贴近我们点击那些不得不同意的协议类型

(5)切换动效

这里选择的动效是切换图片

  @State Img_Src: Resource = $r("app.media.1")

复制

此时也将图片放入指定目录

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


然后调整程序

        Row()
        {
          Toggle({type: ToggleType.Switch})
            .selectedColor(Color.Red)
            .switchPointColor(Color.Red)
            .onChange((isOn: boolean) => {
              this.Img_Src = $r("app.media.9")
            })
          Text("红色")
            .fontSize(30)
            .fontColor(Color.Red)
          Toggle({type: ToggleType.Switch})
            .selectedColor(Color.Blue)
            .switchPointColor(Color.Blue)
            .onChange((isOn: boolean) => {
              this.Img_Src = $r("app.media.10")

            })
          Text("蓝色")
            .fontSize(30)
            .fontColor(Color.Blue)
        }

复制

当按下不同的开关时(选择不同的按钮时,显示不同的图片)

四、系统展示

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


当你选择红色药丸时,会进入黑客帝国,准备战斗吧!!】

#深入浅出学习eTs#(十)蓝药丸还是红药丸-开源基础软件社区


当你选择蓝色药丸,那我们一起加入宝宝巴士,享受生活吧!!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenHarmony
    +关注

    关注

    25

    文章

    3628

    浏览量

    16027
收藏 人收藏

    评论

    相关推荐

    #深入浅出学习eTs#(八)“猜大小”小游戏

    本项目Gitee仓地址:[深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)
    的头像 发表于 05-17 15:08 944次阅读
    #<b class='flag-5'>深入浅出</b><b class='flag-5'>学习</b><b class='flag-5'>eTs#</b>(八)“猜大小”小游戏

    #深入浅出学习eTs#(九)变红码?专属二维码生成

    本项目Gitee仓地址: 深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)
    的头像 发表于 05-13 13:21 1372次阅读
    #<b class='flag-5'>深入浅出</b><b class='flag-5'>学习</b><b class='flag-5'>eTs#</b>(九)变红码?专属二维码生成

    #深入浅出学习eTs#(一)模拟器/真机环境搭建

    本项目的Gitee仓地址: 深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com
    发表于 12-24 13:02

    #深入浅出学习eTs#(二)拖拽式UI

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 09:56

    #深入浅出学习eTs#(三)UI布局

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 09:59

    #深入浅出学习eTs#(四)登陆界面UI

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 10:01

    #深入浅出学习eTs#(六)编写eTs第一个控件

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 10:05

    #深入浅出学习eTs#(七)判断密码是否正确

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 10:06

    #深入浅出学习eTs#药丸还是药丸

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 10:44

    #深入浅出学习eTs#(十七)远端模拟器

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)一
    发表于 12-29 13:56

    深入浅出Cortex-M0学习资料

    深入浅出Cortex-M0学习资料
    发表于 06-18 10:50 0次下载
    <b class='flag-5'>深入浅出</b>Cortex-M0<b class='flag-5'>学习</b>资料

    深入浅出学习250个通信原理资源下载

    深入浅出学习250个通信原理资源下载
    发表于 04-12 09:16 28次下载

    深入浅出学习低功耗蓝牙协议栈

    深入浅出学习低功耗蓝牙协议栈
    发表于 06-23 10:35 57次下载

    深入浅出学习eTs(一)模拟器/真机环境搭建

    本项目的Gitee仓地址: 深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com
    的头像 发表于 05-13 13:17 1537次阅读
    <b class='flag-5'>深入浅出</b><b class='flag-5'>学习</b><b class='flag-5'>eTs</b>(一)模拟器/真机环境搭建

    深入浅出学习eTs(七)如何判断密码是否正确

    本项目Gitee仓地址: 深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)
    的头像 发表于 05-13 13:20 867次阅读
    <b class='flag-5'>深入浅出</b><b class='flag-5'>学习</b><b class='flag-5'>eTs</b>(七)如何判断密码是否正确