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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

前言

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

實現(xiàn)效果

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

需求分析

  • 當整體向上滑動時,優(yōu)先 Scroll 向上滑動。
  • 當整體向下滑動時,優(yōu)先 Scroll 向下滑動。

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

  1. 首先需要實現(xiàn)基礎(chǔ)頁面布局,直接使用 Scroll 嵌套 List 布局。將 List 用 Tab 布局嵌套起來。
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('好的')

            }
            }

這里布局比較簡單,使用兩個 tab 用來切換布局。外層使用 Scroll 包裹,其中一個 tab 的里面使用 List 布局。相信這對大多人來說沒有什么難度。

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

總結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2617

    瀏覽量

    44023
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

    最近在日常開發(fā)過程中,需要實現(xiàn)城市選擇功能,同時支持模糊搜索??此坪唵蔚?b class='flag-5'>功能動手實現(xiàn)起來卻有很多難點。本篇文章詳細記錄開發(fā)過程中遇到的問題和對應(yīng)的解決方法,希望能夠幫助你,建議點贊收藏
    的頭像 發(fā)表于 06-24 17:07 ?114次閱讀

    HarmonyOS實戰(zhàn):快速實現(xiàn)一個上下滾動的廣告控件

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

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

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

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

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

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

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

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

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

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

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

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

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

    Pura X****闊折疊適配:解鎖超視覺與高效交互的全新體驗

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

    HarmonyOS NEXT 應(yīng)用開發(fā)練習(xí):智能視頻推薦

    一、整體思路 本DEMO展示了如何在HarmonyOS NEXT平臺上開發(fā)一個智能視頻推薦應(yīng)用。應(yīng)用通過模擬的用戶偏好數(shù)據(jù),為用戶推薦可能感興趣的視頻。用戶可以通過滑動屏幕查看推薦的視頻列表,并點擊
    發(fā)表于 01-02 16:26

    滑動變阻器的優(yōu)缺點對比

    滑動變阻器的優(yōu)點 1. 精確控制 滑動變阻器能夠提供精確的電阻值調(diào)整,這對于需要精細控制電流的實驗和應(yīng)用至關(guān)重要。通過改變滑動觸點的位置,可以實現(xiàn)對電阻值的連續(xù)調(diào)整,從而精確控制電路中
    的頭像 發(fā)表于 11-25 15:13 ?2126次閱讀

    滑動變阻器的應(yīng)用領(lǐng)域 滑動變阻器在電路中的作用

    觀察和理解電路中電流和電壓的變化。 2. 工業(yè)自動化 在工業(yè)自動化領(lǐng)域,滑動變阻器被用于控制電機的速度和力矩。通過調(diào)整電阻值,可以精確控制電機的電流,從而實現(xiàn)對電機運行狀態(tài)的精細調(diào)節(jié)。 3. 音頻設(shè)備 在音頻設(shè)備中,滑動變阻
    的頭像 發(fā)表于 11-25 15:01 ?3759次閱讀

    滑動變阻器的作用是什么?

    的電壓大小。這對于實現(xiàn)對電子設(shè)備的精確控制具有重要意義。 滑動變阻器還可以用于實現(xiàn)電路的分壓功能,在某些電路中,需要將電源電壓分成幾個不同的電壓值。這時,可以使用
    發(fā)表于 10-08 16:39

    滑動變阻器調(diào)到最大阻值的目的

    滑動變阻器是一種常用的電子元件,其主要功能是通過改變電阻值來控制電路中的電流。在許多電子設(shè)備和實驗中,滑動變阻器的調(diào)節(jié)能力對于實現(xiàn)精確控制和優(yōu)化性能至關(guān)重要。本文將探討
    的頭像 發(fā)表于 08-05 11:03 ?4429次閱讀