HarmonyOS NEXT應(yīng)用開發(fā)之多模態(tài)頁面轉(zhuǎn)場(chǎng)動(dòng)效實(shí)現(xiàn)案例

介紹

本示例介紹多模態(tài)頁面轉(zhuǎn)場(chǎng)動(dòng)效實(shí)現(xiàn):通過半模態(tài)轉(zhuǎn)場(chǎng)實(shí)現(xiàn)半模態(tài)登錄界面潮太, 與全屏模態(tài)和組件轉(zhuǎn)場(chǎng)結(jié)合實(shí)現(xiàn)多模態(tài)組合登錄場(chǎng)景伞辛,其中手機(jī)驗(yàn)證碼登錄與賬號(hào)密碼登錄都為組件窃这, 通過TransitionEffect.move()實(shí)現(xiàn)組件間轉(zhuǎn)場(chǎng)達(dá)到近似頁面轉(zhuǎn)場(chǎng)的效果蛔琅。

效果圖預(yù)覽

使用說明

登錄方式有兩種,驗(yàn)證碼登錄和賬號(hào)密碼登錄

  1. 點(diǎn)擊主頁"點(diǎn)擊跳轉(zhuǎn)半模態(tài)登錄頁"按鈕
  2. 在半模態(tài)窗口中選中同意協(xié)議鍵悯蝉,并點(diǎn)擊獲取驗(yàn)證碼按鈕篷帅,跳轉(zhuǎn)至手機(jī)驗(yàn)證碼登錄頁面。
  3. 通過點(diǎn)擊手機(jī)驗(yàn)證碼登錄頁面中的"賬號(hào)密碼登錄"枢贿,向右切換跳轉(zhuǎn)至賬號(hào)密碼登錄頁面。
  4. 通過點(diǎn)擊賬號(hào)密碼登錄頁面中的"手機(jī)驗(yàn)證碼登錄"刀脏,向左切換跳轉(zhuǎn)至手機(jī)驗(yàn)證碼登錄頁面局荚。

實(shí)現(xiàn)思路

場(chǎng)景:半模態(tài)轉(zhuǎn)場(chǎng)至驗(yàn)證碼登錄,驗(yàn)證碼登錄和賬戶登錄可以相互切換

登錄方式有兩種愈污,驗(yàn)證碼登錄和賬戶耀态,需要在一個(gè)全屏模態(tài)窗口CaptureLogin中切換,使用if進(jìn)行條件渲染钙畔。

1茫陆、通過bindSheet屬性為主頁的button綁定半模態(tài)頁面

Button($r('app.string.half_screen_modal_login_description'))
  .bindSheet($$this.isPresent, this.halfModalLogin(), { // 按鈕綁定半模態(tài)轉(zhuǎn)場(chǎng)
    height: this.sheetHeight, // 半模態(tài)高度
    dragBar: this.showDragBar, // 是否顯示控制條
    backgroundColor: "#FEFEFE",
    showClose:true, // 是否顯示關(guān)閉圖標(biāo)
    shouldDismiss:((sheetDismiss: SheetDismiss)=> { // 半模態(tài)頁面交互式關(guān)閉回調(diào)函數(shù)
      console.log("bind sheet shouldDismiss")
      sheetDismiss.dismiss()
    })
  })

2、在半模態(tài)頁面中的驗(yàn)證碼登錄按鈕綁定全屏模態(tài)轉(zhuǎn)場(chǎng)擎析,并將對(duì)應(yīng)的全屏模態(tài)轉(zhuǎn)場(chǎng)特效置空簿盅。

@Builder
halfModalLogin() { // 半模態(tài)窗口頁面
  Button("驗(yàn)證碼登錄")
    .bindContentCover(this.isPresentInLoginView,this.defaultLogin(),{ modalTransition: ModalTransition.NONE}) // 全屏模態(tài)轉(zhuǎn)場(chǎng)
    .onClick(() => {
      if (this.isConfirmed) { // 判斷是否同意協(xié)議
        // 半模態(tài)頁面中跳轉(zhuǎn)全屏模態(tài)登錄頁
        this.isPresentInLoginView = true;
      }
    })
}

3挥下、通過點(diǎn)擊第二步中的按鈕跳轉(zhuǎn)到全屏模態(tài)組件(CaptureLogin),并通過isDefaultLogin控制兩種登錄組件的條件渲染:true(手機(jī)驗(yàn)證碼登錄),false(二維碼登錄)桨醋,同時(shí)通過TransitionEffect.move()實(shí)現(xiàn)組件間轉(zhuǎn)場(chǎng)棚瘟, 從而實(shí)現(xiàn)組件轉(zhuǎn)場(chǎng)類似頁面轉(zhuǎn)場(chǎng)的效果。

build() {
  Stack({ alignContent: Alignment.TopStart }) {
    if (this.isDefaultLogin) {
      CaptchaLogin() // 手機(jī)驗(yàn)證碼登錄
        .transition(TransitionEffect.move(TransitionEdge.START).animation({ duration: EffectDuration, curve: Curve.Linear })) // 從左邊推出
    } else {
      AccountLogin() // 賬號(hào)密碼登錄
        .transition(TransitionEffect.move(TransitionEdge.END).animation({ duration: EffectDuration, curve: Curve.Linear })) // 從右邊推出
    }
  }
}

高性能知識(shí)點(diǎn)

容器限制條件渲染組件的刷新范圍

工程結(jié)構(gòu)&模塊類型

multimodaltransition                            // har類型
|---src/main/ets/view
|   |---HalfModalWindow.ets                     // 視圖層-主頁
|---src/main/ets/model
|   |---AccountLogin.ets                        // 模型層-賬號(hào)密碼登錄頁 
|   |---CaptchaLogin.ets                        // 模型層-驗(yàn)證碼登錄頁(全屏模態(tài)窗口) 

模塊依賴

har包-common庫中UX標(biāo)準(zhǔn)
@ohos/routermodule(動(dòng)態(tài)路由)

參考資料

半模態(tài)轉(zhuǎn)場(chǎng)
全屏模態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喜最,一起剝皮案震驚了整個(gè)濱河市偎蘸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞬内,老刑警劉巖秕衙,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件围肥,死亡現(xiàn)場(chǎng)離奇詭異奇瘦,居然都是意外死亡闷盔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門能真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁严,“玉大人,你說我怎么就攤上這事粉铐√墼迹” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蝙泼,是天一觀的道長程剥。 經(jīng)常有香客問我,道長踱承,這世上最難降的妖魔是什么倡缠? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任哨免,我火速辦了婚禮茎活,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琢唾。我一直安慰自己载荔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布采桃。 她就那樣靜靜地躺著懒熙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪普办。 梳的紋絲不亂的頭發(fā)上工扎,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音衔蹲,去河邊找鬼肢娘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的橱健。 我是一名探鬼主播而钞,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拘荡!你這毒婦竟也來了臼节?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤珊皿,失蹤者是張志新(化名)和其女友劉穎网缝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟋定,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡途凫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溢吻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片维费。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖促王,靈堂內(nèi)的尸體忽然破棺而出犀盟,到底是詐尸還是另有隱情,我是刑警寧澤蝇狼,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布阅畴,位于F島的核電站,受9級(jí)特大地震影響迅耘,放射性物質(zhì)發(fā)生泄漏贱枣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一颤专、第九天 我趴在偏房一處隱蔽的房頂上張望纽哥。 院中可真熱鬧,春花似錦栖秕、人聲如沸春塌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽只壳。三九已至,卻和暖如春暑塑,著一層夾襖步出監(jiān)牢的瞬間吼句,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工事格, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惕艳,地道東北人况毅。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像尔艇,于是被迫代替她去往敵國和親尔许。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容