本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
一、需求分析
相信沒有人沒有使用過九宮格解鎖吧,從智能機開始迸發的時期到現在,我們本期就要做一個自己的密碼鎖
密碼正確可進入
提示密碼錯誤
可修改密碼
二、控件介紹
PatternLockOpenAtom OpenHarmony
圖案密碼鎖組件,以九宮格圖案的方式輸入密碼,用于密碼驗證場景。手指在PatternLock組件區域按下時開始進入輸入狀態,手指離開屏幕時結束輸入狀態完成密碼輸入。
說明:
該組件從API Version 9開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
PatternLock(controller?: PatternLockController)
參數:
| 參數名 | 參數類型 | 必填 | 描述 |
|---|---|---|---|
| controller | PatternLockController | 否 | 設置PatternLock組件控制器,可用于控制組件狀態重置。 |
屬性
| 名稱 | 參數類型 | 描述 |
|---|---|---|
| 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)。 |

@Entry @Component struct PatternLockTest {
build() {
Column({space: 10}) {
PatternLock(this.patternLockController)
}
.width('100%')
.height('100%')
.padding(10)
}
}
三、UI設計
(1)放置九宮格
首先放入一個九宮格,設置參數

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)放置按鈕

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

@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)修改密碼

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

設置密碼

密碼錯誤

密碼正確
編輯:黃飛
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
密碼鎖
+關注
關注
6文章
250瀏覽量
36707 -
ets
+關注
關注
0文章
20瀏覽量
1938 -
OpenHarmony
+關注
關注
33文章
3952瀏覽量
21102
發布評論請先 登錄
相關推薦
熱點推薦
九宮格鍵盤 已實現、大寫鎖 、長按
` 本帖最后由 123abcfpga 于 2018-4-28 14:04 編輯
九宮格鍵盤實現字母輸入大寫鎖長按等功能 提供源碼源碼獲取:有償1積分(資料太貴、積分又沒有,只能靠發
發表于 04-28 13:52
51內核迪文串口屏模擬手勢解鎖功能(九宮格&滑動)
實現,會更加美觀;變量圖標用于在判斷為有效觸控時,改變顯示內容以達到提示的效果。 三、九宮格解鎖實現方法詳解3.1 主流程 3.2 解鎖流程 3.3 設定密碼流程 3.4 確認
發表于 10-31 10:51
求一種基于Qtopia的采用傳統九宮格方式的中文輸入法設計
基于Qtopia的插件技術,實現了傳統九宮格方式的中文拼音輸入法,該輸入法在輸入中文時支持詞語聯想功能及用戶輸入高頻詞自適應功能。
發表于 04-26 07:01
深入淺出學習eTs之九宮格密碼鎖功能實現
評論