国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

HarmonyOS實戰:快遞信息時間軸效果實現

尤楓 ? 來源:jf_54996641 ? 作者:jf_54996641 ? 2025-06-09 16:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

快遞信息時間軸在購物軟件中是必不可少的功能,通過時間軸可以展示快遞從發貨到派送的每一個環節。本篇文章通過代碼的形式詳細講解在鴻蒙日常開發中如何實現時間軸的效果。(篇尾附有完整源碼)

實現效果

先看最終實現的效果,下面通過代碼講解怎么一步步實現時間軸。

需求分析

  1. 快遞信息時間軸整體包括三個狀態:開始狀態,當前狀態,未達狀態。
  2. 不同狀態對應標題顏色及圖標不同。
  3. 字體顏色可根據狀態的不同改變。
  4. 提示文字可以根據具體情況是否顯示
  5. 時間軸上的虛線可以根據當前節點布局的高度動態改變。(重點)

根據具體需求,采用 List 組件實現時間軸,然后通過控制不同 item 的狀態來實現效果。

技術實現

  1. 定義節點數據對象,這里使用不同數字代表當前節點的狀態:1 表示開始,2 表示當前,3 表示即將到達。
export class OrderDetailBean{
   nodeStatus?: number //當前節點狀態 
   nodeName?: string //節點名稱
   nodeNote?: string //節點備注
   nodeTime?: string //節點時間 
}
  1. 構建節點集合。
aboutToAppear(): void {
    let order1 = new OrderDetailBean()
    order1.nodeStatus = 1
    order1.nodeName = "唐僧已經從長安出發"
    order1.nodeTime = "1900-7-25  14:30:03"
    order1.nodeNote = ""

    let order2 = new OrderDetailBean()
    order2.nodeStatus = 1
    order2.nodeName = "唐僧到達五指山"
    order2.nodeNote = "溫馨提示:此處有妖猴出沒"
    let order3 = new OrderDetailBean()
    order3.nodeStatus = 1
    order3.nodeName = "孫悟空護送唐僧西天取經"
    order3.nodeNote = "請小白龍提前準備,下一站化身白龍馬。"
    let order4 = new OrderDetailBean()
    order4.nodeStatus = 2
    order4.nodeName = "唐僧到達高老莊"
    order3.nodeNote = "孫悟空大戰豬八戒"
    let order5 = new OrderDetailBean()
    order5.nodeStatus = 3
    order5.nodeName = "唐僧即將到達流沙河"
    order5.nodeNote = "收服卷簾大將沙悟凈。"
    let order6 = new OrderDetailBean()
    order6.nodeStatus = 3
    order6.nodeName = "唐僧即將到達大雷音"
    order6.nodeNote = "取得真經,修成正果。"
    this.list.push(order1, order2, order3, order4, order5,order6)
  }
  1. 使用 List 組件實現時間軸,鴻蒙的 List 組件原生支持橫向和縱向布局,可以根據實際需求進行調整。這里使用默認縱向布局。
List(){
        ForEach(this.list,(item: object, index: number) = > {
          this.itemView(this.list[index], index)
        })
      }.width("100%")
        .height("100%")
  1. 接下來就是繪制 List 的 item,從最終的效果圖來看,虛線部分只會在首尾之間顯示,這里通過集合長度判斷。最后一條虛線不顯示,虛線可以通過設置布局邊框的不同樣式實現,這里使用的BorderStyle.Dashe。
// 時間軸
        if (this.index < this.totalSize - 1) {
          Stack()
            .width(0)
            .borderStyle(BorderStyle.Dashed)
            .borderWidth(0.8)
            .height(this.minHeight)
            .borderColor($r('app.color.color_gray'))

        }
  1. 同時虛線部分應該有最小高度,然后通過當前 Item 的高度變化動態改變虛線的高度,鴻蒙布局組件提供了 onAreaChange 方法用來監聽當前布局高度的變化,通過修改最新高度來實現虛線的動態變化。注意這個 minHeight 必須使用@state修飾。
.onAreaChange((oldValue: Area, newValue: Area) = > {
        this.minHeight = newValue.height as number
      })
  1. 最后使用 Row 布局將虛線布局和內容布局橫向排列,就可以實現虛線跟隨內容高度變化。

完整源碼

@Component
  struct ItemLayout {
    @State bean: OrderDetailProgressBean = new OrderDetailProgressBean()
    index: number = 0
    totalSize: number = 0
    @State minHeight: number = 54

    build() {
      Row() {
        Column() {
          // 時間軸節點
          Image(this.getImage(this.bean.nodeStatus ?? 0))
            .width(16)
            .height(16)
            .borderRadius(8)

          // 時間軸
          if (this.index < this.totalSize - 1) {
            Stack()
              .width(0)
              .borderStyle(BorderStyle.Dashed)
              .borderWidth(0.8)
              .height(this.minHeight)
              .borderColor("#BABEC4")

          }
        }

        // 內容區域
        Column() {
          Text(this.bean.nodeName)
            .fontSize(14)
            .fontColor(this.getColor(this.bean.nodeStatus ?? 0))
            .fontWeight(FontWeight.Medium)


          Text(this.bean.nodeTime)
            .fontSize(12)
            .fontColor(Color.Gray)
            .margin({
              top: 4,
            })
          Text(this.bean.nodeNote)
            .fontSize(12)
            .fontColor(this.bean.nodeStatus == 1 ? Color.Gray : Color.Orange)
            .margin({
              top: 8,
            })

        }
        .margin({
          left: 8,
        })
          .alignItems(HorizontalAlign.Start)
          .width("84%")
          .margin({
            left: 8,
          })
          .onAreaChange((oldValue: Area, newValue: Area) = > {
            this.minHeight = newValue.height as number
          })
      }
      .alignItems(VerticalAlign.Top)
        .width("100%")
    }

    getImage(state: number) {
      if (state == 1) {
        return $r("app.media.icon_complete")
      } else if (state == 2) {
        return $r("app.media.icon_selecte")
      } else {
        return $r("app.media.icon_unselecte")
      }
    }

    getColor(state: number) {
      if (state == 1) {
        return $r("app.color.color_gray")
      } else if (state == 2) {
        return $r("app.color.color_black")
      } else {
        return $r("app.color.color_gray_1")
      }
    }
  }

總結

本文的重點是知道虛線可以根據設置布局樣式實現,然后就是如何實現虛線和布局動態高度變化同步,通過鴻蒙原生組件提供的方法可以實現。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    80

    文章

    2153

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    鳥鳥手持PDA | 掃描快遞單PDA巴槍重塑快遞行業,實時更新物流信息

    深入解析手持PDA(巴槍)在快遞物流行業的應用。了解鳥鳥科技N60和N73S等快遞PDA智能終端如何通過OCR識別、4G實時互聯及工業級防護,解決掃碼慢、錄入難痛點,全面提升收件、派送與分揀效率,助力物流企業數字化轉型,實現物流
    的頭像 發表于 12-05 14:53 ?447次閱讀
    鳥鳥手持PDA | 掃描<b class='flag-5'>快遞</b>單PDA巴槍重塑<b class='flag-5'>快遞</b>行業,實時更新物流<b class='flag-5'>信息</b>

    LuatOS中PWM實現LED亮度調節與呼吸燈的實戰教程

    PWM在LED亮度調節和呼吸燈效果實現方面有著廣泛應用。在LuatOS環境中,如何高效運用PWM功能是開發者需要掌握的關鍵。本實戰教程將通過具體案例,引導開發者快速上手,輕松實現LED的精彩燈光
    的頭像 發表于 11-11 19:05 ?8479次閱讀
    LuatOS中PWM<b class='flag-5'>實現</b>LED亮度調節與呼吸燈的<b class='flag-5'>實戰</b>教程

    【RK3568 NPU實戰】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果

    【RK3568 NPU實戰】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與效果
    的頭像 發表于 11-10 15:58 ?1056次閱讀
    【RK3568 NPU<b class='flag-5'>實戰</b>】別再閑置你的NPU!手把手帶你用迅為資料跑通Android AI檢測Demo,附完整流程與<b class='flag-5'>效果</b>

    AppGallery Connect(HarmonyOS 5及以上) --修改測試時間

    測試時間的測試版本。 在“基礎信息”欄,點擊“測試時間”后的“修改”。 3.在彈出的“修改測試時間”窗口,選擇新的測試開始時間和測試結束
    發表于 09-30 16:38

    GraniStudio:獲取信息例程

    1.文件運行 導入工程 雙擊運行桌面 GraniStudio .exe。 通過引導界面導入獲取信息運動例程,點擊導入按鈕。 打開獲取信息例程所在路徑,選中獲取
    的頭像 發表于 08-22 16:40 ?659次閱讀
    GraniStudio:獲取<b class='flag-5'>軸</b><b class='flag-5'>信息</b>例程

    RFID標簽在智能快遞柜中的優勢

    RFID標簽在智能快遞柜中的優勢高效率:RFID可以快速批量讀取信息,大幅縮短操作時間,提高快遞存取效率。準確性:RFID減少了人工操作的錯誤率,提高了
    的頭像 發表于 07-08 13:52 ?519次閱讀
    RFID標簽在智能<b class='flag-5'>快遞</b>柜中的優勢

    HarmonyOS next】ArkUI-X休閑益智猜字謎【基礎】

    下圖是在iOS中的運行效果 下圖是在HarmonyOS中的運行效果 今天咱們來聊聊如何用ArkUI-X這個新興框架實現跨端開發,通過一個猜字謎小游戲帶大家感受它的開發魅力。本文不僅能讓
    發表于 06-26 20:01

    HarmonyOS實戰:Tab頂部滑動懸停功能實現

    日常開發過程中,遇到這種 Scroll 嵌套 List 列表滑動頂部懸停的場景十分常見,在鴻蒙開發時也正好實現了這個功能,本篇文章將帶你一步步實現 Tab 頂部懸停的效果,建議點贊收藏!
    的頭像 發表于 06-24 17:07 ?444次閱讀

    HarmonyOS實戰: 城市選擇功能的快速實現

    最近在日常開發過程中,需要實現城市選擇功能,同時支持模糊搜索。看似簡單的功能動手實現起來卻有很多難點。本篇文章詳細記錄開發過程中遇到的問題和對應的解決方法,希望能夠幫助你,建議點贊收藏!
    的頭像 發表于 06-24 17:07 ?488次閱讀

    HarmonyOS實戰:3秒實現一個自定義輪播圖

    那么簡單,需要考慮的細節很多。不過在 HarmonyOS實現一個輪播圖卻是十分的簡單,本篇文章教你在最短的時間內快速實現一個自定義的 輪播圖,建議點贊收藏!
    的頭像 發表于 06-24 17:06 ?1509次閱讀

    HarmonyOS實戰:自定義時間選擇器

    前言 最近在日常鴻蒙開發過程中,經常會使用一些時間選擇器,鴻蒙官方提供的時間選擇器滿足不了需求,所以自己動手自定義一些經常會使用到的時間選擇器,希望能幫到你,建議點贊收藏! 實現
    的頭像 發表于 06-09 15:51 ?649次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實戰</b>:自定義<b class='flag-5'>時間</b>選擇器

    HarmonyOS實戰:組件化項目搭建

    ?本文將詳細講解HarmonyOs組件化項目搭建的全過程,帶領大家實現一個組件化項目。 項目創建 首先創建一個項目工程,點擊開發工具DevEco-Stdio的****File 選項,選擇 New 然后點擊 Create Project 。 選擇創建一個EmptyAbili
    的頭像 發表于 06-09 14:58 ?671次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實戰</b>:組件化項目搭建

    HarmonyOS5云服務技術分享--ArkTS調用函數

    ?【HarmonyOS實戰指南】手把手教你用ArkTS玩轉云函數文件獲取? 大家好呀今天我們來聊聊如何通過HarmonyOS的ArkTS語言實現云函數文件獲取功能。整個過程就像搭積木一
    發表于 05-22 18:22

    HarmonyOS NEXT開發實戰:DevEco AI輔助編程工具(CodeGenie)的使用

    如下: 此接口默認插入到方法開頭,可根據當前工程onWindowStageCreate邏輯來將此接口移動至合適的位置,保證頁面能正常跳轉。四、效果實現
    發表于 03-10 15:41

    HarmonyOS NEXT開發實戰:DevEco Studio中DeepSeek的使用

    DeepSeek API參考,以及請求體詳情信息可見:DeepSeek API文檔 第五步:體驗DeepSeek輔助編程 選擇模型:點擊左側邊欄的ProxyAI,打開對話框,輸入想要的效果內容 案例實現實現
    發表于 03-07 14:56