chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

HarmonyOS實(shí)戰(zhàn):Tab頂部滑動(dòng)懸停功能實(shí)現(xiàn)

尤楓 ? 來(lái)源:jf_54996641 ? 2025-06-24 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

日常開(kāi)發(fā)過(guò)程中,遇到這種 Scroll 嵌套 List 列表滑動(dòng)頂部懸停的場(chǎng)景十分常見(jiàn),在鴻蒙開(kāi)發(fā)時(shí)也正好實(shí)現(xiàn)了這個(gè)功能,本篇文章將帶你一步步實(shí)現(xiàn) Tab 頂部懸停的效果,建議點(diǎn)贊收藏!

實(shí)現(xiàn)效果

先看本文的最終實(shí)現(xiàn)效果如下:

需求分析

  • 當(dāng)整體向上滑動(dòng)時(shí),優(yōu)先 Scroll 向上滑動(dòng)。
  • 當(dāng)整體向下滑動(dòng)時(shí),優(yōu)先 Scroll 向下滑動(dòng)。

技術(shù)實(shí)現(xiàn)

  1. 首先需要實(shí)現(xiàn)基礎(chǔ)頁(yè)面布局,直接使用 Scroll 嵌套 List 布局。將 List 用 Tab 布局嵌套起來(lái)。
Scroll(this.scroller) {
          Column() {
            Text("內(nèi)容")
              .textAlign(TextAlign.Center)
              .fontColor(Color.White)
              .backgroundColor(this.themColor.value)
              .width('100%')
              .height('40%')

            Tabs({ barPosition: BarPosition.Start }) {
              TabContent() {
                Column() {
                  Refresh({refreshing:false,friction:0,offset:0}){
                    List({ space: 10, scroller: this.scrollerForList }) {
                      ForEach(this.list, (item: string) = > {
                        ListItem() {
                          Text('ListItem' + item)
                            .width('100%')
                            .height('100%')
                            .borderRadius(15)
                            .fontSize(24)
                            .textAlign(TextAlign.Center)
                            .backgroundColor(Color.White)
                        }
                        .width('100%')
                        .height(100)
                      }, (item: string) = > item)
                    }
                   
                  .pullToRefresh(true)
                }

              }.tabBar('你好')

              TabContent() {
                Column().width('100%').height('100%').backgroundColor('#007DFF')
              }.tabBar('好的')

            }
            }

這里布局比較簡(jiǎn)單,使用兩個(gè) tab 用來(lái)切換布局。外層使用 Scroll 包裹,其中一個(gè) tab 的里面使用 List 布局。相信這對(duì)大多人來(lái)說(shuō)沒(méi)有什么難度。

  1. 搭建好基礎(chǔ)布局后,開(kāi)始處理滑動(dòng)沖突問(wèn)題。根據(jù)實(shí)現(xiàn)效果來(lái)看,每次都是讓外層的 Scroll 優(yōu)先滑動(dòng),需要給 List 增加攔截處理,讓每次滑動(dòng)優(yōu)先外層 Scroll 布局滑動(dòng),這里使用nestedScroll 屬性的NestedScrollMode.PARENT_FIRST,即優(yōu)先父布局滑動(dòng)。
.nestedScroll({
                      scrollForward: NestedScrollMode.PARENT_FIRST,
                      scrollBackward: NestedScrollMode.PARENT_FIRST
                    })
  1. 這時(shí)不管怎么上下滑動(dòng),里面的 List 都不會(huì)滑動(dòng),只讓外層的 Scroll 組件滑動(dòng)。接下來(lái)處理 List 的滑動(dòng)事件。
  2. 首先定義一個(gè)枚舉類型,用來(lái)標(biāo)記滑動(dòng)位置。
enum ScrollPosition {
  top,
  center,
  bottom
}
  1. 接下來(lái)分別實(shí)現(xiàn) List 的 onReachStart,onReachEnd,onScrollFrameBegin 三個(gè)方法。這個(gè)比較容易理解,滑動(dòng)道頂部時(shí),記錄當(dāng)前位置為頂部,滑動(dòng)底部時(shí),記錄當(dāng)前位置為底部,onScrollFrameBegin 表示滑動(dòng)過(guò)程中的回調(diào),根據(jù)當(dāng)前滑動(dòng)位置和滑動(dòng)偏移量來(lái)記錄是否繼續(xù)滑動(dòng)。
.onReachStart(() = > {
                      this.listPosition = ScrollPosition.top
                    })
                    .onReachEnd(() = > {
                      this.listPosition = ScrollPosition.bottom
                    })
                    .onScrollFrameBegin((offset: number, state: ScrollState) = > {
                      if ((this.listPosition == ScrollPosition.top && offset <=0)||(this.listPosition == ScrollPosition.bottom && offset >=0)) {
                        return {offsetRemain :offset}
                      }
                      this.listPosition = ScrollPosition.center
                      return {offsetRemain:offset}
                    })
  1. 再看外層 Scroll 的滑動(dòng)方法監(jiān)聽(tīng),同樣也是分別實(shí)現(xiàn)這三種方法,不過(guò)注意onScrollFrameBegin 里面返回值和 List 的不同,當(dāng) Scroll 滑動(dòng)到底部活著頂部時(shí),Scroll 不再滑動(dòng),注意看返回值為 0,否則 Scroll 才滑動(dòng)。
.onReachStart(() = > {
          this.listPosition = ScrollPosition.top
        })
        .onReachEnd(() = > {
          this.listPosition = ScrollPosition.bottom
        })
        .onScrollFrameBegin((offset: number, _: ScrollState) = > {
          if ((this.listPosition == ScrollPosition.top && offset <= 0) || (
            this.listPosition == ScrollPosition.bottom && offset >= 0)
          ) {
            return { offsetRemain: 0 }
          }
          //不在底部
          this.listPosition = ScrollPosition.center
          return { offsetRemain: offset }
        })
  1. 根據(jù) List 組件和 Scroll 組件的滑動(dòng)監(jiān)聽(tīng),用來(lái)判斷哪種狀態(tài)下 Scroll 優(yōu)先滑動(dòng),當(dāng) Scroll 滑動(dòng)到底部活頂部時(shí),通過(guò)返回值賦值為 0 ,阻止 Scroll 滑動(dòng),將滑動(dòng)事件交個(gè)內(nèi)部的 List 滑動(dòng)。注意 List 通過(guò)設(shè)置nestedScroll 將滑動(dòng)事件優(yōu)先讓外層 Scroll 處理。所以一開(kāi)始是外層的 Scroll 先滑動(dòng)。

總結(jié)

本文主要是根據(jù)實(shí)際需求實(shí)現(xiàn)的滑動(dòng)效果,每次都優(yōu)先讓 Scroll 滑動(dòng),還有更多的滑動(dòng)場(chǎng)景都可以用這種方式的思路解決,主要通過(guò)不同的判斷條件即可實(shí)現(xiàn)。例如向下滑動(dòng)時(shí)優(yōu)先讓 List 滑動(dòng),然后再讓 Scroll 滑動(dòng)。學(xué)會(huì)的小伙伴趕緊動(dòng)手試試吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    60

    文章

    2921

    瀏覽量

    45565
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2151

    瀏覽量

    35841
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AirCloud平臺(tái)+excloud擴(kuò)展庫(kù):核心功能實(shí)戰(zhàn)應(yīng)用!

    AirCloud平臺(tái)的配置靈活性與excloud擴(kuò)展庫(kù)的功能擴(kuò)展性,通過(guò)實(shí)戰(zhàn)應(yīng)用得以充分體現(xiàn)。下面整理核心功能實(shí)戰(zhàn)示例集,覆蓋常見(jiàn)業(yè)務(wù)需求場(chǎng)景:如通過(guò)平臺(tái)配置快速搭建高可用架構(gòu),借助e
    的頭像 發(fā)表于 12-24 17:17 ?499次閱讀
    AirCloud平臺(tái)+excloud擴(kuò)展庫(kù):核心<b class='flag-5'>功能</b><b class='flag-5'>實(shí)戰(zhàn)</b>應(yīng)用!

    滑動(dòng)開(kāi)關(guān)詳解:類型、規(guī)格和應(yīng)用

    動(dòng)作實(shí)現(xiàn)連接或斷開(kāi)。這篇簡(jiǎn)要的技術(shù)綜述將研究滑動(dòng)開(kāi)關(guān)的工作原理,探討其主要配置,并概述進(jìn)行最優(yōu)選擇的電氣和機(jī)械注意事項(xiàng)。 滑動(dòng)開(kāi)關(guān)的基礎(chǔ)知識(shí) [滑動(dòng)開(kāi)關(guān)]是一種機(jī)電元件,通過(guò)線性
    的頭像 發(fā)表于 10-01 15:14 ?1963次閱讀
    <b class='flag-5'>滑動(dòng)</b>開(kāi)關(guān)詳解:類型、規(guī)格和應(yīng)用

    基于LabVIEW的鼠標(biāo)滑動(dòng)方向檢測(cè)教程

    本篇教程源于一位客戶的真實(shí)需求,需要LabVIEW能夠檢測(cè)到鼠標(biāo)滑動(dòng)的方向,然后通過(guò)判斷滑動(dòng)方向處理后續(xù)的功能
    的頭像 發(fā)表于 07-30 13:51 ?719次閱讀
    基于LabVIEW的鼠標(biāo)<b class='flag-5'>滑動(dòng)</b>方向檢測(cè)教程

    HarmonyOS 5】鴻蒙應(yīng)用實(shí)現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能

    HarmonyOS 5】鴻蒙應(yīng)用實(shí)現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能 ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財(cái)# 一、前言
    的頭像 發(fā)表于 07-11 18:16 ?1164次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙應(yīng)用<b class='flag-5'>實(shí)現(xiàn)</b>發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的<b class='flag-5'>功能</b>

    HarmonyOS實(shí)戰(zhàn): 城市選擇功能的快速實(shí)現(xiàn)

    最近在日常開(kāi)發(fā)過(guò)程中,需要實(shí)現(xiàn)城市選擇功能,同時(shí)支持模糊搜索??此坪?jiǎn)單的功能動(dòng)手實(shí)現(xiàn)起來(lái)卻有很多難點(diǎn)。本篇文章詳細(xì)記錄開(kāi)發(fā)過(guò)程中遇到的問(wèn)題和對(duì)應(yīng)的解決方法,希望能夠幫助你,建議點(diǎn)贊收藏
    的頭像 發(fā)表于 06-24 17:07 ?411次閱讀

    HarmonyOS實(shí)戰(zhàn):3秒實(shí)現(xiàn)一個(gè)自定義輪播圖

    那么簡(jiǎn)單,需要考慮的細(xì)節(jié)很多。不過(guò)在 HarmonyOS實(shí)現(xiàn)一個(gè)輪播圖卻是十分的簡(jiǎn)單,本篇文章教你在最短的時(shí)間內(nèi)快速實(shí)現(xiàn)一個(gè)自定義的 輪播圖,建議點(diǎn)贊收藏!
    的頭像 發(fā)表于 06-24 17:06 ?1429次閱讀

    HarmonyOS實(shí)戰(zhàn):快速實(shí)現(xiàn)一個(gè)上下滾動(dòng)的廣告控件

    上要想實(shí)現(xiàn)這樣的功能并不容易,那么在鴻蒙上怎么實(shí)現(xiàn)這樣的功能呢?本篇文章教你使用最簡(jiǎn)單的方式實(shí)現(xiàn)一個(gè)支持上下滾動(dòng)的廣告控件,建議點(diǎn)贊收藏!
    的頭像 發(fā)表于 06-24 17:05 ?460次閱讀

    HarmonyOS實(shí)戰(zhàn)實(shí)現(xiàn)任意拖動(dòng)的應(yīng)用懸浮窗口

    為了增加應(yīng)用程序功能的豐富性和便利性,很多應(yīng)用都會(huì)提供一個(gè)懸浮窗口實(shí)現(xiàn)多頁(yè)面顯示。特別是一些性能檢測(cè)工具,比如 dokit 。在鴻蒙上怎么實(shí)現(xiàn)類似的全局懸浮窗口呢?閱讀完本篇文章你將學(xué)會(huì)在鴻蒙上如何
    的頭像 發(fā)表于 06-24 17:04 ?1255次閱讀

    HarmonyOS 5】桌面快捷方式功能實(shí)現(xiàn)詳解

    HarmonyOS 5】桌面快捷方式功能實(shí)現(xiàn)詳解 ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財(cái)# 一、前言 在移動(dòng)應(yīng)用開(kāi)發(fā)中,如何讓用戶快速
    的頭像 發(fā)表于 06-21 16:42 ?2112次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】桌面快捷方式<b class='flag-5'>功能</b><b class='flag-5'>實(shí)現(xiàn)</b>詳解

    HarmonyOS實(shí)戰(zhàn):組件化項(xiàng)目搭建

    前言 鴻蒙應(yīng)用開(kāi)發(fā)已經(jīng)成為互聯(lián)網(wǎng)新的風(fēng)口,開(kāi)發(fā)鴻蒙軟件已經(jīng)成為今年工作的核心目標(biāo)。在軟件開(kāi)發(fā)過(guò)程中,對(duì)于復(fù)雜度較大,功能較多的軟件都會(huì)采用組件化項(xiàng)目架構(gòu),那么對(duì)于鴻蒙應(yīng)用開(kāi)發(fā)是否也能實(shí)現(xiàn)組件化呢
    的頭像 發(fā)表于 06-09 14:58 ?595次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實(shí)戰(zhàn)</b>:組件化項(xiàng)目搭建

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(股票類)

    ;{/*...*/}) }.width(\'70%\') // 固定寬度觸發(fā)截?cái)?} ? 開(kāi)發(fā)經(jīng)驗(yàn): 當(dāng)Tab超出容器時(shí)自動(dòng)隱藏并顯示\"...\" 用Blank組件實(shí)現(xiàn)間距自動(dòng)填充 雙指滑動(dòng)
    發(fā)表于 06-03 16:13

    鴻蒙5開(kāi)發(fā)寶藏案例分享---折疊屏懸停態(tài)開(kāi)發(fā)實(shí)踐

    HarmonyOS早就準(zhǔn)備好了超多實(shí)用案例,今天必須帶大家解鎖\"懸停態(tài)\"開(kāi)發(fā)的正確姿勢(shì),手慢無(wú)哦~ ?** 先來(lái)點(diǎn)干貨:什么是懸停態(tài)?** 就是把折疊屏像筆記本電腦那樣半折立在桌上
    發(fā)表于 06-03 12:04

    HarmonyOS5云服務(wù)技術(shù)分享--登錄郵件功能整理

    高度封裝的實(shí)現(xiàn)方案。希望本文能幫你快速落地功能,同時(shí)注重安全與體驗(yàn)的平衡。如果有更多實(shí)戰(zhàn)問(wèn)題,歡迎在評(píng)論區(qū)留言交流,一起玩轉(zhuǎn)HarmonyOS生態(tài)! ??Happy Coding! ?
    發(fā)表于 05-22 16:04

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能
    的頭像 發(fā)表于 05-22 14:27 ?1888次閱讀
    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)<b class='flag-5'>實(shí)戰(zhàn)</b>:<b class='flag-5'>實(shí)現(xiàn)</b>動(dòng)態(tài)切換引腳復(fù)用<b class='flag-5'>功能</b>

    Pura X****闊折疊適配:解鎖超視覺(jué)與高效交互的全新體驗(yàn)

    時(shí)列表能填滿頂部剩余空間。 以上方法可實(shí)現(xiàn)流暢的滑動(dòng)沉浸式瀏覽體驗(yàn),同時(shí)保證頁(yè)面布局的適應(yīng)性和美觀性。 目前,小紅書(shū)、蜻蜓FM等應(yīng)用已依據(jù)HarmonyOS開(kāi)發(fā)者官網(wǎng)設(shè)備場(chǎng)景專區(qū)的最佳
    發(fā)表于 04-14 15:30