「Mac暢玩鴻蒙與硬件45」UI互動應用篇22 - 評分統計工具

本篇將帶你實現一個評分統計工具,用戶可以對多個選項進行評分。應用會實時更新每個選項的評分結果,并統計平均分。這一功能適合用于問卷調查或評分統計的場景。
在這里插入圖片描述


關鍵詞
  • UI互動應用
  • 評分統計
  • 狀態管理
  • 數據處理
  • 多目標評分

一、功能說明

評分統計工具允許用戶對多個選項(如電影、餐廳或商品)分別評分,應用實時顯示每個選項的評分,并計算和顯示所有選項的平均評分。


二、所需組件
  • @Entry@Component 裝飾器
  • ColumnRow 布局組件
  • Text 組件用于顯示評分結果
  • Button 組件用于評分選擇
  • @State 修飾符用于狀態管理
  • Image 組件用于展示示例圖片

三、項目結構
  • 項目名稱RatingStatisticsApp
  • 自定義組件名稱RatingStatisticsPage
  • 代碼文件RatingStatisticsPage.etsIndex.ets

四、代碼實現
// 文件名:RatingStatisticsPage.ets@Component
export struct RatingStatisticsPage {@State ratings: number[] = [0, 0, 0]; // 每個選項的評分options: string[] = ['選項 1', '選項 2', '選項 3']; // 選項列表build() {Column({ space: 20 }) {// 示例圖片Image($r('app.media.cat')).width(226).height(266).alignSelf(ItemAlign.Center);// 顯示評分選項及評分按鈕ForEach(this.options, (option: string, index: number) => {Column({ space: 10 }) {Text(`${option} 當前評分: ${this.ratings[index]} / 5`).fontSize(20).alignSelf(ItemAlign.Start);Row({ space: 5 }) {ForEach([1, 2, 3, 4, 5], (score: number) => {Button(`${score}`).fontSize(18).backgroundColor(this.getButtonColor(index, score)) // 動態設置按鈕背景顏色.fontColor(Color.White).onClick(() => {this.setRating(index, score);});});}};});// 顯示平均評分Text(`平均評分: ${this.calculateAverage().toFixed(1)} / 5`).fontSize(22).fontWeight(FontWeight.Bold).alignSelf(ItemAlign.Center);}.padding(20).width('100%').height('100%');}// 設置評分private setRating(index: number, rating: number) {this.ratings[index] = rating;}// 動態獲取按鈕顏色private getButtonColor(index: number, score: number): Color {return this.ratings[index] >= score ? Color.Pink : Color.Gray; // 選中評分及其以下的按鈕變色}// 計算平均評分private calculateAverage(): number {const total = this.ratings.reduce((sum, rating) => sum + rating, 0);return total / this.ratings.length;}
}
// 文件名:Index.etsimport { RatingStatisticsPage } from './RatingStatisticsPage';@Entry
@Component
struct Index {build() {Column() {RatingStatisticsPage() // 調用評分統計工具頁面}.padding(20)}
}

效果示例:用戶可以為每個選項打分,評分實時更新,并計算和顯示平均評分。評分按鈕選中后及以下的按鈕會變為粉色,其余保持默認灰色。界面上還展示了示例圖片。

在這里插入圖片描述


五、代碼解讀
  1. 狀態管理

    • 通過 @State 修飾符管理 ratings 數組,實現評分的實時更新。
  2. 評分按鈕顏色動態變化

    • 使用 getButtonColor 方法判斷當前評分按鈕的背景顏色。
    • 被選中及以下的按鈕會變為粉色,未選中的保持默認灰色
  3. 動態布局

    • 使用 ForEach 遍歷 options 和評分值,動態生成評分按鈕及顯示當前評分的文本。
  4. 平均評分計算

    • 通過 reduce 方法對所有選項的評分求和,計算出平均值。
  5. 示例圖片

    • 使用 Image($r('app.media.cat')) 添加示例圖片,增強界面視覺效果。

六、優化建議
  1. 動態選項支持:允許用戶自定義添加評分選項,使工具更具通用性。
  2. 評分結果導出:添加數據導出功能,方便用于問卷分析和統計。
  3. 誤觸提示:增加確認提示,避免用戶誤觸按鈕導致評分變化。

七、效果展示
  • 評分按鈕交互:選中的評分按鈕及其以下按鈕背景顏色變為粉色,其余保持灰色
  • 平均評分展示:實時更新評分后,自動計算并顯示平均評分。
  • 示例圖片展示:頁面展示了一張示例圖片,提升界面視覺體驗。

八、相關知識點
  • 「Mac暢玩鴻蒙與硬件31」UI互動應用篇8 - 自定義評分星級組件
  • 「Mac暢玩鴻蒙與硬件11」鴻蒙 UI 組件篇1 - Text 和 Button 組件詳解

小結

本篇教程通過評分統計工具的實現,展示了狀態管理、動態布局及數據計算的應用。用戶可以體驗實時評分更新及平均分計算,適用于問卷調查和評分統計場景。


下一篇預告

在下一篇「UI互動應用篇23 - 自定義天氣預報組件」中,我們將探討如何通過靜態數據和動態交互實現一個簡易天氣預報組件,包括城市選擇、天氣圖標展示和溫度調節功能。


上一篇: 「Mac暢玩鴻蒙與硬件44」UI互動應用篇21 - 隨機勵志語錄生成器
下一篇: 「Mac暢玩鴻蒙與硬件46」UI互動應用篇23 - 自定義天氣預報組件

作者:SoraLuna
鏈接:https://www.nutpi.net/thread?topicId=446
來源:堅果派
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/63643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63643.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

類與對象的理解

面向對象中兩個重要的概念:類與對象 類 簡單理解,它指的是類型或者分類或某個模塊 比如:人類、動物類……;入公司的入職單,沒寫上任何人的情況下 對象 簡單理解,它指的具體的個體 備注:對…

遞歸實現指數型枚舉(遞歸)

92. 遞歸實現指數型枚舉 - AcWing題庫 每個數有選和不選兩種情況 我們把每個數看成每層,可以畫出一個遞歸搜索樹 葉子節點就是我們的答案 很容易寫出每dfs函數 dfs傳入一個u表示層數 當層數大于我們n時,去判斷每個數字的選擇情況,輸出被選…

Linux相關概念和易錯知識點(25)(信號原理、操作系統的原理、volatile)

目錄 1.信號的產生 (1)kill (2)raise、abort 2.對block、pending、handler表的管理 (1)信號集(sigset_t) (2)block表的管理 ①操作相關的函數 ②sigpr…

opencv中的色彩空間及其轉換

在 OpenCV 中,色彩空間(Color Space)指的是表示顏色的一種方式,或是用數學模型對顏色的表達。不同的色彩空間采用不同的方式來描述顏色的三要素(如亮度、飽和度、色調),因此可以在不同的應用場景…

OPPO 數據分析面試題及參考答案

如何設計共享單車數據庫的各個字段? 對于共享單車的數據庫設計,首先考慮用戶相關的字段。用戶表可以包含用戶 ID,這是一個唯一標識符,用于區分不同用戶;姓名,記錄用戶的真實姓名;聯系方式,比如手機號碼,方便在出現問題時聯系用戶;注冊時間,記錄用戶何時開始使用共享…

在Ubuntu下運行QEMU仿真FreeBSD riscv64系統

在Ubuntu下運行QEMU仿真FreeBSD riscv64系統 突發奇想,嘗試在Ubuntu下運行QEMU仿真FreeBSD riscv64系統, 參考這篇文檔:手把手教你在QEMU上運行RISC-V Linux_qemu 運行 .bin-CSDN博客 并參考FreeBSD的Wiki:riscv - FreeBSD Wik…

大模型微調---Prompt-tuning微調

目錄 一、前言二、Prompt-tuning實戰2.1、下載模型到本地2.2、加載模型與數據集2.3、處理數據2.4、Prompt-tuning微調2.5、訓練參數配置2.6、開始訓練 三、模型評估四、完整訓練代碼 一、前言 Prompt-tuning通過修改輸入文本的提示(Prompt)來引導模型生…

Visual Studio 、 MSBuild 、 Roslyn 、 .NET Runtime、SDK Tools之間的關系

1. Visual Studio Visual Studio 是一個集成開發環境(IDE),為開發者提供代碼編寫、調試、測試和發布等功能。它內置了 MSBuild、Roslyn 和 SDK Tools,并提供圖形化界面來方便開發者進行項目管理和構建。與其他組件的關系&#xf…

Winnows基礎(2)

Target 了解常見端口及服務,熟練cmd命令,編寫簡單的 .bat 病毒程序。 Trail 常見服務及端口 80 web 80-89 可能是web 443 ssl心臟滴血漏洞以及一些web漏洞測試 445 smb 1433 mssql 1521 oracle 2082/2083 cpanel主機管理系統登陸(國外用的…

Edge Scdn用起來怎么樣?

Edge Scdn:提升網站安全與性能的最佳選擇 在當今互聯網高速發展的時代,各種網絡攻擊層出不窮,特別是針對網站的DDoS攻擊威脅,幾乎每個行業都可能成為目標。為了確保網站的安全性與穩定性,越來越多的企業開始關注Edge …

通信技術以及5G和AI保障電網安全與網絡安全

摘 要:電網安全是電力的基礎,隨著智能電網的快速發展,越來越多的ICT信息通信技術被應用到電力網絡。本文分析了歷史上一些重大電網安全與網絡安全事故,介紹了電網安全與網絡安全、通信技術與電網安全的關系以及相應的電網安全標準…

梯度(Gradient)和 雅各比矩陣(Jacobian Matrix)的區別和聯系:中英雙語

雅各比矩陣與梯度:區別與聯系 在數學與機器學習中,梯度(Gradient) 和 雅各比矩陣(Jacobian Matrix) 是兩個核心概念。雖然它們都描述了函數的變化率,但應用場景和具體形式有所不同。本文將通過…

時間序列預測論文閱讀和相關代碼庫

時間序列預測論文閱讀和相關代碼庫列表 MLP-based的時間序列預測資料DLinearUnetTSFPDMLPLightTS 代碼庫以及論文庫:Time-Series-LibraryUnetTSFLightTS MLP-based的時間序列預測資料 我會定期把我的所有時間序列預測論文有關的資料鏈接全部同步到這個文章中&#…

引言和相關工作的區別

引言和相關工作的區別 引言 目的與重點 引言主要是為了引出研究的主題,向讀者介紹為什么這個研究問題是重要且值得關注的。它通常從更廣泛的背景出發,闡述研究領域的現狀、面臨的問題或挑戰,然后逐漸聚焦到論文要解決的具體問題上。例如,在這篇關于聯邦學習數據交易方案的…

GitLab分支管理策略和最佳實踐

分支管理是 Git 和 GitLab 中非常重要的部分,合理的分支管理可以幫助團隊更高效地協作和開發。以下是一些細化的分支管理策略和最佳實踐: 1. 分支命名規范 ? 主分支:通常命名為 main 或 master,用于存放穩定版本的代碼。 ? …

批量提取zotero的論文構建知識庫做問答的大模型(可選)——含轉存PDF-分割統計PDF等

文章目錄 提取zotero的PDF上傳到AI平臺保留文件名代碼分成20個PDF視頻講解 提取zotero的PDF 右鍵查看目錄 發現目錄為 C:\Users\89735\Zotero\storage 寫代碼: 掃描路徑‘C:\Users\89735\Zotero\storage’下面的所有PDF文件,全部復制一份匯總到"C:\Users\89735\Downl…

LabVIEW實現NB-IoT通信

目錄 1、NB-IoT通信原理 2、硬件環境部署 3、程序架構 4、前面板設計 5、程序框圖設計 6、測試驗證 本專欄以LabVIEW為開發平臺,講解物聯網通信組網原理與開發方法,覆蓋RS232、TCP、MQTT、藍牙、Wi-Fi、NB-IoT等協議。 結合實際案例,展示如何利用LabVIEW和常用模塊實現物聯網…

面試題整理9----談談對k8s的理解2

面試題整理9----談談對k8s的理解2 1. Service 資源1.1 ServiceClusterIPNodePortLoadBalancerIngressExternalName 1.2 Endpoints1.3 Ingress1.4 EndpointSlice1.5 IngressClass 2. 配置和存儲資源2.1 ConfigMap2.2 Secret2.3 PersistentVolume2.4 PersistentVolumeClaim2.5 St…

精準采集整車信號:風丘混合動力汽車工況測試

一 背景 混合動力汽車是介于純電動汽車與燃油汽車兩者之間的一種新能源汽車。它既包含純電動汽車無污染、啟動快的優勢,又擁有燃油車續航便捷、不受電池容量限制的特點。在當前環境下,混合動力汽車比純電動汽車更符合目前的市場需求。 然而&#xff0c…

帶標題和不帶標題的內部表

什么是工作區? 什么是工作區?簡單來說,工作區是單行數據。它們應具有與任何內部表相同的格式。它用于一次處理一行內部表中的數據。 內表和工作區的區別 ? 一圖勝千言 內表的類型 有兩種類型的內表: 帶 Header 行…