<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

深入淺出學習eTs之九宮格密碼鎖功能實現

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-05-13 13:25 ? 次閱讀

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

一、需求分析

相信沒有人沒有使用過九宮格解鎖吧,從智能機開始迸發的時期到現在,我們本期就要做一個自己的密碼鎖

密碼正確可進入

提示密碼錯誤

可修改密碼

二、控件介紹

PatternLockOpenAtom OpenHarmony

圖案密碼鎖組件,以九宮格圖案的方式輸入密碼,用于密碼驗證場景。手指在PatternLock組件區域按下時開始進入輸入狀態,手指離開屏幕時結束輸入狀態完成密碼輸入。

說明:

該組件從API Version 9開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。

接口

PatternLock(controller?: PatternLockController)

參數:

參數名 參數類型 必填 描述
controller PatternLockController 設置PatternLock組件控制器,可用于控制組件狀態重置。


屬性

不支持除backgroundColor以外的通用屬性設置。

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

事件

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

名稱 描述
onPatternComplete(callback: (input: Array) => void) 密碼輸入結束時觸發該回調。 input: 與選中宮格圓點順序一致的數字數組,數字為選中宮格圓點的索引值(第一行圓點從左往右依次為0,1,2,第二行圓點依次為3,4,5,第三行圓點依次為6,7,8)。

wKgZomRfH2GAJWs9AAB5XPQ8OYI371.gif

@Entry @Component struct PatternLockTest {

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

三、UI設計

(1)放置九宮格

首先放入一個九宮格,設置參數

wKgaomRfH2KANQMUAABjJ0e0W1M095.png

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

(2)放置按鈕

wKgZomRfH2KAbg1HAABPtkUGAT0944.png

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

(3)設置密碼

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 = "密碼長度至少為5位數。";
            return;
          }
          if (this.passwords.length > 0) {
            if (this.passwords.toString() == input.toString()) {
              this.passwords = input
              this.message = "密碼設置成功"
            } else {
              this.message = '密碼輸入錯誤'
            }
          } else {
            this.passwords = input
            this.message = "密碼輸入錯誤"
          }
        })

(4)修改密碼

wKgZomRfH2OASFpoAACBRsG_DAo600.png

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

四、效果展示

wKgaomRfH2SAIOcPAAMFfsVnHbE049.gif

設置密碼

wKgZomRfH2SAUdf2AAMGelayeGI177.gif

密碼錯誤

wKgaomRfH2WALvNkAAGPMAnGNgc430.gif

密碼正確

編輯:黃飛

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

    關注

    6

    文章

    249

    瀏覽量

    34638
  • ets
    ets
    +關注

    關注

    0

    文章

    20

    瀏覽量

    1578
  • OpenHarmony
    +關注

    關注

    24

    文章

    3447

    瀏覽量

    15330
收藏 人收藏

    評論

    相關推薦

    ARM7 深入淺出學習

    深入淺出ARM7 LPC213x_214 學習
    發表于 12-04 17:28

    九宮格如何解鎖

    請問一下大家,安卓手機九宮格了怎么解鎖,,,,小弟謝謝了
    發表于 03-06 17:55

    深入淺出Android

    深入淺出Android
    發表于 04-26 10:48

    九宮格圖標界面登陸與管理(類似手機界面)

    請問哪位大師可以推薦類似九宮格圖標界面的登陸與管理的例程呢?
    發表于 10-08 11:48

    九宮格鍵盤 已實現、大寫 、長按

    ` 本帖最后由 123abcfpga 于 2018-4-28 14:04 編輯 九宮格鍵盤實現字母輸入大寫長按等功能 提供源碼源碼獲?。河袃?積分(資料太貴、積分又沒有,只能靠發
    發表于 04-28 13:52

    51內核迪文串口屏模擬手勢解鎖功能九宮格&滑動)

    實現,會更加美觀;變量圖標用于在判斷為有效觸控時,改變顯示內容以達到提示的效果。 三、九宮格解鎖實現方法詳解3.1 主流程 3.2 解鎖流程 3.3 設定密碼流程 3.4 確認
    發表于 10-31 10:51

    深入淺出排序學習使用指南

    深入淺出排序學習:寫給程序員的算法系統開發實踐
    發表于 09-16 11:38

    Photoshop九宮格制作方法

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

    求一種基于Qtopia的采用傳統九宮格方式的中文輸入法設計

    基于Qtopia的插件技術,實現了傳統九宮格方式的中文拼音輸入法,該輸入法在輸入中文時支持詞語聯想功能及用戶輸入高頻詞自適應功能。
    發表于 04-26 07:01

    #深入淺出學習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 13:55

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

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發表于 05-13 13:20 ?708次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(七)如何判斷<b class='flag-5'>密碼</b>是否正確
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>