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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出學(xué)習(xí)eTs之九宮格密碼鎖功能實(shí)現(xiàn)

Harmony&嵌入式學(xué)習(xí) ? 來(lái)源:Harmony&嵌入式學(xué)習(xí) ? 作者:Harmony&嵌入式學(xué) ? 2023-05-13 13:25 ? 次閱讀

本項(xiàng)目Gitee倉(cāng)地址:深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)

一、需求分析

相信沒(méi)有人沒(méi)有使用過(guò)九宮格解鎖吧,從智能機(jī)開(kāi)始迸發(fā)的時(shí)期到現(xiàn)在,我們本期就要做一個(gè)自己的密碼鎖

密碼正確可進(jìn)入

提示密碼錯(cuò)誤

可修改密碼

二、控件介紹

PatternLockOpenAtom OpenHarmony

圖案密碼鎖組件,以九宮格圖案的方式輸入密碼,用于密碼驗(yàn)證場(chǎng)景。手指在PatternLock組件區(qū)域按下時(shí)開(kāi)始進(jìn)入輸入狀態(tài),手指離開(kāi)屏幕時(shí)結(jié)束輸入狀態(tài)完成密碼輸入。

說(shuō)明:

該組件從API Version 9開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

接口

PatternLock(controller?: PatternLockController)

參數(shù):

參數(shù)名 參數(shù)類(lèi)型 必填 描述
controller PatternLockController 設(shè)置PatternLock組件控制器,可用于控制組件狀態(tài)重置。


屬性

不支持除backgroundColor以外的通用屬性設(shè)置。

名稱(chēng) 參數(shù)類(lèi)型 描述
sideLength Length 設(shè)置組件的寬度和高度(寬高相同)。設(shè)置為0或負(fù)數(shù)等非法值時(shí)組件不顯示。 默認(rèn)值:300vp
circleRadius Length 設(shè)置宮格中圓點(diǎn)的半徑。 默認(rèn)值:14vp
regularColor ResourceColor 設(shè)置宮格圓點(diǎn)在“未選中”狀態(tài)的填充顏色。 默認(rèn)值:Color.Black
selectedColor ResourceColor 設(shè)置宮格圓點(diǎn)在“選中”狀態(tài)的填充顏色。 默認(rèn)值:Color.Black
activeColor ResourceColor 設(shè)置宮格圓點(diǎn)在“激活”狀態(tài)的填充顏色(“激活”狀態(tài)為手指經(jīng)過(guò)圓點(diǎn)但還未選中的狀態(tài))。 默認(rèn)值:Color.Black
pathColor ResourceColor 設(shè)置連線(xiàn)的顏色。 默認(rèn)值:Color.Blue
pathStrokeWidth number | string 設(shè)置連線(xiàn)的寬度。設(shè)置為0或負(fù)數(shù)等非法值時(shí)連線(xiàn)不顯示。 默認(rèn)值:34vp
autoReset boolean 設(shè)置在完成密碼輸入后再次在組件區(qū)域按下時(shí)是否重置組件狀態(tài)。設(shè)置為true,完成密碼輸入后再次在組件區(qū)域按下時(shí)會(huì)重置組件狀態(tài)(即清除之前輸入的密碼);反之若設(shè)置為false,則不會(huì)重置組件狀態(tài)。 默認(rèn)值:true

事件

除支持通用事件外,還支持以下事件:

名稱(chēng) 描述
onPatternComplete(callback: (input: Array) => void) 密碼輸入結(jié)束時(shí)觸發(fā)該回調(diào)。 input: 與選中宮格圓點(diǎn)順序一致的數(shù)字?jǐn)?shù)組,數(shù)字為選中宮格圓點(diǎn)的索引值(第一行圓點(diǎn)從左往右依次為0,1,2,第二行圓點(diǎn)依次為3,4,5,第三行圓點(diǎn)依次為6,7,8)。

wKgZomRfH2GAJWs9AAB5XPQ8OYI371.gif

@Entry @Component struct PatternLockTest {

  build() {
    Column({space: 10}) {
      PatternLock(this.patternLockController)
    }
    .width('100%')
    .height('100%')
    .padding(10)
  }
}

三、UI設(shè)計(jì)

(1)放置九宮格

首先放入一個(gè)九宮格,設(shè)置參數(shù)

wKgaomRfH2KANQMUAABjJ0e0W1M095.png

      PatternLock(this.patternLockController)
        .sideLength(350)            // 設(shè)置寬高
        .circleRadius(15)            // 設(shè)置圓點(diǎn)半徑
        .regularColor(Color.Blue)    // 設(shè)置圓點(diǎn)顏色
        .pathStrokeWidth(30)        // 設(shè)置連線(xiàn)粗細(xì)
        .backgroundColor('rgba(209, 219, 229, 0.95)')
        .autoReset(true)            // 支持用戶(hù)在完成輸入后再次觸屏重置組件狀態(tài)
        .border({radius:30})
        .onPatternComplete((input: Array) => {
        })

(2)放置按鈕

wKgZomRfH2KAbg1HAABPtkUGAT0944.png

            Button('清除')
              .width(200)
              .fontSize(20)
              .onClick(() => {
                this.patternLockController.reset();
              })

(3)設(shè)置密碼

wKgaomRfH2OAWNlgAABxjxZuEtg370.png

 @State passwords: Number[] = []

      Text(this.passwords.toString())
        .textAlign(TextAlign.Center)
        .fontSize(22)

        .onPatternComplete((input: Array) => {
          if (input == null || input == undefined || input.length < 5) {
            this.message = "密碼長(zhǎng)度至少為5位數(shù)。";
            return;
          }
          if (this.passwords.length > 0) {
            if (this.passwords.toString() == input.toString()) {
              this.passwords = input
              this.message = "密碼設(shè)置成功"
            } else {
              this.message = '密碼輸入錯(cuò)誤'
            }
          } else {
            this.passwords = input
            this.message = "密碼輸入錯(cuò)誤"
          }
        })

(4)修改密碼

wKgZomRfH2OASFpoAACBRsG_DAo600.png

      Button('重置密碼')
        .width(200)
        .fontSize(20)
        .onClick(() => {
          set_flag = 1;
          this.passwords = [];
          this.message = '請(qǐng)輸入新的密碼';
          this.patternLockController.reset();
        })

四、效果展示

wKgaomRfH2SAIOcPAAMFfsVnHbE049.gif

設(shè)置密碼

wKgZomRfH2SAUdf2AAMGelayeGI177.gif

密碼錯(cuò)誤

wKgaomRfH2WALvNkAAGPMAnGNgc430.gif

密碼正確

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 密碼鎖
    +關(guān)注

    關(guān)注

    6

    文章

    249

    瀏覽量

    35023
  • ets
    ets
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    1622
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3723

    瀏覽量

    16343
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    #深入淺出學(xué)習(xí)eTs#(十)藍(lán)藥丸還是紅藥丸

    本項(xiàng)目Gitee倉(cāng)地址: 深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)
    的頭像 發(fā)表于 05-17 15:07 ?959次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>eTs</b>#(十)藍(lán)藥丸還是紅藥丸

    九宮格如何解鎖

    請(qǐng)問(wèn)一下大家,安卓手機(jī)九宮格了怎么解鎖,,,,小弟謝謝了
    發(fā)表于 03-06 17:55

    九宮格圖標(biāo)界面登陸與管理(類(lèi)似手機(jī)界面)

    請(qǐng)問(wèn)哪位大師可以推薦類(lèi)似九宮格圖標(biāo)界面的登陸與管理的例程呢?
    發(fā)表于 10-08 11:48

    九宮格鍵盤(pán) 已實(shí)現(xiàn)、大寫(xiě) 、長(zhǎng)按

    ` 本帖最后由 123abcfpga 于 2018-4-28 14:04 編輯 九宮格鍵盤(pán)實(shí)現(xiàn)字母輸入大寫(xiě)長(zhǎng)按等功能 提供源碼源碼獲?。河袃?積分(資料太貴、積分又沒(méi)有,只能靠發(fā)
    發(fā)表于 04-28 13:52

    51內(nèi)核迪文串口屏模擬手勢(shì)解鎖功能九宮格&滑動(dòng))

    實(shí)現(xiàn),會(huì)更加美觀;變量圖標(biāo)用于在判斷為有效觸控時(shí),改變顯示內(nèi)容以達(dá)到提示的效果。 三、九宮格解鎖實(shí)現(xiàn)方法詳解3.1 主流程 3.2 解鎖流程 3.3 設(shè)定密碼流程 3.4 確認(rèn)
    發(fā)表于 10-31 10:51

    Photoshop九宮格制作方法

    Photoshop分享 九宮格制作(升級(jí))
    發(fā)表于 04-07 07:39

    求一種基于Qtopia的采用傳統(tǒng)九宮格方式的中文輸入法設(shè)計(jì)

    基于Qtopia的插件技術(shù),實(shí)現(xiàn)了傳統(tǒng)九宮格方式的中文拼音輸入法,該輸入法在輸入中文時(shí)支持詞語(yǔ)聯(lián)想功能及用戶(hù)輸入高頻詞自適應(yīng)功能。
    發(fā)表于 04-26 07:01

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

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

    #深入淺出學(xué)習(xí)eTs#(十五)九宮格密碼鎖

    本項(xiàng)目Gitee倉(cāng)地址:深入淺出eTs學(xué)習(xí): 帶大家深入淺出學(xué)習(xí)eTs (gitee.com)一
    發(fā)表于 12-29 13:55

    STM32深入淺出新手篇

    STM32深入淺出新手篇,很好的單片機(jī)學(xué)習(xí)資料。
    發(fā)表于 03-21 17:43 ?128次下載

    手機(jī)輸入法到底是九宮格好用還是全鍵盤(pán)好用

    手機(jī)輸入法到底是九宮格好用還是全鍵盤(pán)好用?這個(gè)話(huà)題已經(jīng)由來(lái)已久。
    的頭像 發(fā)表于 03-18 09:22 ?4590次閱讀

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載

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

    深入淺出學(xué)習(xí)eTs(一)模擬器/真機(jī)環(huán)境搭建

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

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

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