本項(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ù)類(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)。 |
@Entry @Component struct PatternLockTest { build() { Column({space: 10}) { PatternLock(this.patternLockController) } .width('100%') .height('100%') .padding(10) } }
三、UI設(shè)計(jì)
(1)放置九宮格
首先放入一個(gè)九宮格,設(shè)置參數(shù)
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)放置按鈕
Button('清除') .width(200) .fontSize(20) .onClick(() => { this.patternLockController.reset(); })
(3)設(shè)置密碼
@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)修改密碼
Button('重置密碼') .width(200) .fontSize(20) .onClick(() => { set_flag = 1; this.passwords = []; this.message = '請(qǐng)輸入新的密碼'; this.patternLockController.reset(); })
四、效果展示
設(shè)置密碼
密碼錯(cuò)誤
密碼正確
編輯:黃飛
-
密碼鎖
+關(guān)注
關(guān)注
6文章
249瀏覽量
35023 -
ets
+關(guān)注
關(guān)注
0文章
20瀏覽量
1622 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3723瀏覽量
16343
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論