0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸

Harmony&嵌入式學習 ? 2023-05-17 15:07 ? 次閱讀

本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)

一、需求分析

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


我們本章的內容選擇致敬黑客帝國,如果你處于主角的立場,你會選擇藍藥丸還是紅藥丸呢?本章節(jié)來構建一個選擇器,讓大家自己選擇接受現實還是沉入虛擬!

  • 通過開關進行狀態(tài)選擇
  • 按下同意簽署協議的聲明
  • 對不同的選擇有不同的UI效果

二、控件介紹

主要使用到的是開關控件

Toggle官方文檔

組件提供勾選框樣式、狀態(tài)按鈕樣式及開關樣式。

說明: 該組件從API Version 8開始支持。后續(xù)版本如有新增內容,則采用上角標單獨標記該內容的起始版本。

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

復制

參數 參數類型 必填 默認值 參數描述
type ToggleType - 開關類型。
isOn boolean false 開關是否打開,true:打開,false:關閉。

屬性

名稱 參數 默認值 參數描述
selectedColor Color - 設置組件打開狀態(tài)的背景顏色。
switchPointColor Color - 設置Switch類型的圓形滑塊顏色。 > 說明: > 僅對type為ToggleType.Switch生效。

事件

名稱 功能描述
onChange(callback: (isOn: boolean) => void) 開關狀態(tài)切換時觸發(fā)該事件。

通過對“改變”事件內的程序編寫,即可實現其它的互動,簡單樣例如下圖

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

復制

效果如下:

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

三、UI設計

(1)圖片框放置

本內容我們首先要搭建一個基礎框架,還是使用我們的老樣子布局,在最上面先放一個圖片

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

相同的操作,還是先將圖片放到我們目錄這個位置,這樣就能調用資源文件了

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


來放置一個image控件,這里引入一個新概念,可以使用百分比的形式來設置控件(區(qū)別于之前使用像素點)

        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#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

(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#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

同時預置了選擇觸發(fā)事件,之后備用,此時已經可以進行選擇操作

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

(4)同意協議

同意協議是使用的開關的另一個類型版本

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

復制

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)

因為上下間距太短,這里扯入了一個新的控件:Blank()

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

復制

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


這樣更貼近我們點擊那些不得不同意的協議類型

(5)切換動效

這里選擇的動效是切換圖片

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

復制

此時也將圖片放入指定目錄

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


然后調整程序

        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)
        }

復制

當按下不同的開關時(選擇不同的按鈕時,顯示不同的圖片)

四、系統(tǒng)展示

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


當你選擇紅色藥丸時,會進入黑客帝國,準備戰(zhàn)斗吧??!】

#深入淺出學習eTs#(十)藍藥丸還是紅藥丸-開源基礎軟件社區(qū)


當你選擇藍色藥丸,那我們一起加入寶寶巴士,享受生活吧?。?/p>

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • OpenHarmony
    +關注

    關注

    25

    文章

    3641

    瀏覽量

    16061
收藏 人收藏

    評論

    相關推薦

    #深入淺出學習eTs#(八)“猜大小”小游戲

    本項目Gitee倉地址:[深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:08 ?954次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs#</b>(八)“猜大小”小游戲

    #深入淺出學習eTs#(九)變紅碼?專屬二維碼生成

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:21 ?1392次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs#</b>(九)變紅碼?專屬二維碼生成

    #深入淺出學習eTs#(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    發(fā)表于 12-24 13:02

    #深入淺出學習eTs#(二)拖拽式UI

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 09:56

    #深入淺出學習eTs#(三)UI布局

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 09:59

    #深入淺出學習eTs#(四)登陸界面UI

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:01

    #深入淺出學習eTs#(六)編寫eTs第一個控件

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:05

    #深入淺出學習eTs#(七)判斷密碼是否正確

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:06

    #深入淺出學習eTs#藥丸還是藥丸

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 10:44

    #深入淺出學習eTs#(十七)遠端模擬器

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發(fā)表于 12-29 13:56

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發(fā)表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學習</b>資料

    深入淺出學習250個通信原理資源下載

    深入淺出學習250個通信原理資源下載
    發(fā)表于 04-12 09:16 ?28次下載

    深入淺出學習低功耗藍牙協議棧

    深入淺出學習低功耗藍牙協議棧
    發(fā)表于 06-23 10:35 ?57次下載

    深入淺出學習eTs(一)模擬器/真機環(huán)境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    的頭像 發(fā)表于 05-13 13:17 ?1566次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(一)模擬器/真機環(huán)境搭建

    深入淺出學習eTs(七)如何判斷密碼是否正確

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發(fā)表于 05-13 13:20 ?870次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(七)如何判斷密碼是否正確