#667 运动结束界面,数据不完整,数据内容不丰富,没有设置目标也会显示目标完成度
authorCaisking <3449750381@qq.com>
Mon, 23 Sep 2024 12:57:13 +0000 (20:57 +0800)
committerCaisking <3449750381@qq.com>
Mon, 23 Sep 2024 12:57:13 +0000 (20:57 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp

index be75218..2ed8314 100644 (file)
  * @Date: 2024-04-15 10:55:58
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-04-25 10:32:38
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
+ * @FilePath:
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
  */
 /***
  * @Date: 2024-04-15 10:55:58
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-04-16 09:27:11
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
+ * @FilePath:
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
  */
 #ifndef _TraingEnddata_VIEW_H
 #define _TraingEnddata_VIEW_H
 
 #include "BaseView.h"
 #include "View.h"
-#include <ui_scroll_view.h>
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
-#include "components/ui_image_view.h"
+#include "components/icon_adapter.h"
 #include "components/ui_button.h"
+#include "components/ui_card_page.h"
+#include "components/ui_chart.h"
 #include "components/ui_image_animator.h"
+#include "components/ui_image_view.h"
+#include "components/ui_label.h"
 #include "components/ui_label_button_ext.h"
-#include "components/ui_chart.h"
+#include "components/ui_label_ext.h"
 #include "components/ui_list.h"
-#include "components/icon_adapter.h"
-#include "wearable_log.h"
+#include "components/ui_view_group.h"
 #include "ohos_types.h"
-#include "components/ui_card_page.h"
+#include "wearable_log.h"
+#include <ui_scroll_view.h>
 
+#include "TraingEnddataPresenter.h"
+#include "traing/Training_UiConfig.h"
 #include "traing/include/TraingModel.h"
 #include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-#include "TraingEnddataPresenter.h"
-namespace OHOS
-{
+namespace OHOS {
 #define BUTTONBACK "button1"
 
-    class TraingEnddataPresenter;
-    class TraingEnddataView : public View<TraingEnddataPresenter>
-    {
+class TraingEnddataPresenter;
+class TraingEnddataView : public View<TraingEnddataPresenter> {
 
-    public:
-        TraingEnddataView();
-        virtual ~TraingEnddataView();
-        static TraingEnddataView *GetInstance(void);
+public:
+  TraingEnddataView();
+  virtual ~TraingEnddataView();
+  static TraingEnddataView *GetInstance(void);
 
-        void OnStart() override;
-        void OnSetUpView() override;
-        void OnTearDownView() override;
-        void OnStop() override;
-        void InitView();
-        void DeInit();
+  void OnStart() override;
+  void OnSetUpView() override;
+  void OnTearDownView() override;
+  void OnStop() override;
+  void InitView();
+  void DeInit();
 
-        void PreLoad(void);
+  void PreLoad(void);
 
-        void InitData(void);
-        void InitializeImageViews(void);
-        void InitializeLabels(void);
-        void SetLabelsTextColor(const std::vector<UILabel *> &labels, OHOS::ColorType color);
-        void AddLabelsToScrollView(const std::vector<UILabel *> &labels);
-        void InitializeExitControls(void);
+  void InitData(void);
+  void InitializeImageViews(void);
+  void InitializeLabels(void);
+  void SetLabelsTextColor(const std::vector<UILabel *> &labels,
+                          OHOS::ColorType color);
+  void AddLabelsToScrollView(const std::vector<UILabel *> &labels);
+  void InitializeExitControls(void);
 
-        void BonusdataView();
-        void ExitView();
+  void BonusdataView();
+  void ExitView();
 
-    private:
-        UIView::OnDragListener *draglistener{nullptr};
-        TraingEnddataView(TraingEnddataView &&) = delete;
-        TraingEnddataView &operator=(TraingEnddataView &&) = delete;
+private:
+  UIView::OnDragListener *draglistener{nullptr};
+  TraingEnddataView(TraingEnddataView &&) = delete;
+  TraingEnddataView &operator=(TraingEnddataView &&) = delete;
 
-        UIViewGroup *container_ = nullptr;
-        UIScrollView *scrollView_ = nullptr;
+  UIViewGroup *container_ = nullptr;
+  UIScrollView *scrollView_ = nullptr;
 
-        UILabelExt *labelutime = nullptr;   // u训练时间
-        UILabelExt *labelutag = nullptr;    // u训练完成度
-        UILabelExt *labelumile = nullptr;   // u训练距离
-        UILabelExt *labeluheart = nullptr;  // u训练平均心率
-        UILabelExt *labelustrong = nullptr; // u训练强度
-        UILabelExt *labelusteps = nullptr;  // u训练步数
-        UILabelExt *labeluavpace = nullptr; // u训练平均配速
-        UILabelExt *labelufreq = nullptr;   // u训练步频
-        UILabelExt *labelustride = nullptr; // u训练步幅
+  UILabelExt *labelutime = nullptr;    // u训练时间
+  UILabelExt *labelutag = nullptr;     // u训练完成度
+  UILabelExt *labelumile = nullptr;    // u训练距离
+  UILabelExt *labeluheart = nullptr;   // u训练平均心率
+  UILabelExt *labelustrong = nullptr;  // u训练强度
+  UILabelExt *labelusteps = nullptr;   // u训练步数
+  UILabelExt *labeluavpace = nullptr;  // u训练平均配速
+  UILabelExt *labelufreq = nullptr;    // u训练步频
+  UILabelExt *labelustride = nullptr;  // u训练步幅
+  UILabelExt *labelucalorie = nullptr; // u训练卡路里
 
-        UILabelExt *labeltype = nullptr;     // 训练类型
-        UILabelExt *labelsport = nullptr;    // 训练项
-        UILabelExt *labelduration = nullptr; // 训练时间
-        UILabelExt *labeltag = nullptr;      // 训练目标完成度
-        UILabelExt *labeltime = nullptr;     // 训练时长
-        UILabelExt *labelmile = nullptr;     // 训练距离
-        UILabelExt *labelheart = nullptr;    // 训练平均心率
-        UILabelExt *labelstrong = nullptr;   // 训练强度
-        UILabelExt *labelsteps = nullptr;    // 训练步数
-        UILabelExt *labelavpace = nullptr;   // 训练平均配速
-        UILabelExt *labelfreq = nullptr;     // 训练步频
-        UILabelExt *labelstride = nullptr;   // 训练步幅
+  UILabelExt *labeltype = nullptr;     // 训练类型
+  UILabelExt *labelsport = nullptr;    // 训练项
+  UILabelExt *labelduration = nullptr; // 训练时间
+  UILabelExt *labeltag = nullptr;      // 训练目标完成度
+  UILabelExt *labeltime = nullptr;     // 训练时长
+  UILabelExt *labelmile = nullptr;     // 训练距离
+  UILabelExt *labelheart = nullptr;    // 训练平均心率
+  UILabelExt *labelstrong = nullptr;   // 训练强度
+  UILabelExt *labelsteps = nullptr;    // 训练步数
+  UILabelExt *labelavpace = nullptr;   // 训练平均配速
+  UILabelExt *labelfreq = nullptr;     // 训练步频
+  UILabelExt *labelstride = nullptr;   // 训练步幅
+  UILabelExt *labelcalories = nullptr; // 训练卡路里
 
-        UILabelExt *exitLabel = nullptr;        // APP提醒
-        UILabelButtonExt *exitButton = nullptr; // 返回按键
+  UILabelExt *exitLabel = nullptr;        // APP提醒
+  UILabelButtonExt *exitButton = nullptr; // 返回按键
 
-        UIImageView *imageIcon = nullptr;
-        UIImageView *imageLine2 = nullptr;
-        UIImageView *imageLine3 = nullptr;
-        UIImageView *imageLine4 = nullptr;
-        UIImageView *imageLine5 = nullptr;
-        UIImageView *imageLine6 = nullptr;
-        UIImageView *imageLine7 = nullptr;
-        UIImageView *imageLine8 = nullptr;
-        UIImageView *imageLine9 = nullptr;
-        UIImageView *imageLine10 = nullptr;
+  UIImageView *imageIcon = nullptr;
+  UIImageView *imageLine2 = nullptr;
+  UIImageView *imageLine3 = nullptr;
+  UIImageView *imageLine4 = nullptr;
+  UIImageView *imageLine5 = nullptr;
+  UIImageView *imageLine6 = nullptr;
+  UIImageView *imageLine7 = nullptr;
+  UIImageView *imageLine8 = nullptr;
+  UIImageView *imageLine9 = nullptr;
+  UIImageView *imageLine10 = nullptr;
+  UIImageView *imageLine11 = nullptr;
+  UIImageView *imageLine12 = nullptr;
 
-        bool viewiInitStatus{false};
-    };
+  bool viewiInitStatus{false};
+};
 } // namespace OHOS
 #endif // TraingEnddata_PRESENTER_H
index ded48ee..fd7666f 100644 (file)
 
 #include "traing/include/TraingEnddataView.h"
 
-#include "common/image_cache_manager.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
 #include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
+#include "common/image_cache_manager.h"
 #include "components/ui_button.h"
+#include "components/ui_label_ext.h"
+#include "traing/Training_UiConfig.h"
 #include "traing/include/TraingModel.h"
+#include "ui_resource_image.h"
+#include "ui_resource_string.h"
 #include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-#include <cmath>  // 包含数学函数库,用于四舍五入
-#include <string> // 包含字符串处理库,用于使用 std::to_string
+#include <cmath> // 包含数学函数库,用于四舍五入
+#include <iostream>
+#include <sstream> // 用于 std::ostringstream
+#include <string>  // 包含字符串处理库,用于使用 std::to_string
+#include <ui_scroll_view.h>
 
 /*测试打印函数*/
-#define PRINT_LINE_INFO() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__, __LINE__)
-#define PRINT_FUNCTION_LINE() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n", __FUNCTION__, __LINE__)
-
+#define PRINT_LINE_INFO()                                                      \
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__,   \
+                __LINE__)
+#define PRINT_FUNCTION_LINE()                                                  \
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n",         \
+                __FUNCTION__, __LINE__)
+
+/*
+    普通运动:
+                时长,平均心率,训练强度,卡路里,目标完成度
+    算法支持运动:
+                时长,平均心率,训练强度,卡路里,
+                距离,步数,平均配速,步幅,步频,目标完成度
+*/
 #define UI_UPDATA 0
-namespace OHOS
-{
+namespace OHOS {
 
-    static const int startY_Unit = 252;
-    static const int startY_Value = 292;
-    static const int labelHeight = 40;
-    static const int labelInterval = 130;
-    ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
+static const int startY_Unit = 252;
+static const int startY_Value = 292;
+static const int labelHeight = 40;
+static const int labelInterval = 130;
+ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
 
-    static const int initialY = 132;
-    static const int lineHeight = 130;
-    static const int iconHeight = 80;
-    static const int verticalOffset = 2;
-    static const int baseY = 214;
+static const int initialY = 132;
+static const int lineHeight = 130;
+static const int iconHeight = 80;
+static const int verticalOffset = 2;
+static const int baseY = 214;
 
-    static TraingEnddataView *g_pTraingEnddataView{nullptr};
+static TraingEnddataView *g_pTraingEnddataView{nullptr};
 
-    TraingEnddataView::TraingEnddataView()
-    {
-        g_pTraingEnddataView = this;
-    }
+TraingEnddataView::TraingEnddataView() { g_pTraingEnddataView = this; }
 
-    TraingEnddataView::~TraingEnddataView()
-    {
-        // DeInit();
-        UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
-        UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+TraingEnddataView::~TraingEnddataView() {
+  // DeInit();
+  scrollView_->RemoveAll();
 
-        g_pTraingEnddataView = nullptr;
-    }
+  UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+  UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
 
-    TraingEnddataView *TraingEnddataView::GetInstance()
-    {
+  g_pTraingEnddataView = nullptr;
+}
 
-        return g_pTraingEnddataView;
-    }
+TraingEnddataView *TraingEnddataView::GetInstance() {
 
-    // 初始化图像
-    void TraingEnddataView ::InitializeImageViews()
-    {
-        // 初始化主图标
-        InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image", WALKING_54_IMAGE);
-
-        InitImageView(imageLine2, 97, baseY, 80, 20, "image2", LINE_IMAGE);                  // imageLine2
-        InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3", LINE_IMAGE);     // imageLine3
-        InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4", LINE_IMAGE); // imageLine4
-        InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5", LINE_IMAGE); // imageLine5
-        scrollView_->Add(imageLine2);
-        scrollView_->Add(imageLine3);
-        scrollView_->Add(imageLine4);
-        scrollView_->Add(imageLine5);
-        scrollView_->Add(imageIcon);
-
-#if UI_UPDATA
-        InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
-        InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
-        scrollView_->Add(imageLine6);
-        scrollView_->Add(imageLine7);
-#endif
-    }
-    void TraingEnddataView ::InitializeLabels(void)
-    {
-        /*title and sport*/
-        InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走", DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
-
-        // 初始化单位Label
-        InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 0, 240, 40, "label8", STR_GOAL_ACCOMPLISHMENT_DEGREE, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 1, 240, 40, "label9", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 2, 240, 40, "label11", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 3, 240, 40, "label2", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME, 30);
-
-        // 设置文本颜色
-        labelduration->SetTextColor(textColor);
-        labelutag->SetTextColor(textColor);
-        labelutime->SetTextColor(textColor);
-        labeluheart->SetTextColor(textColor);
-        labelustrong->SetTextColor(textColor);
-
-        // 初始化值
-        InitLabel(labeltag, 146, startY_Value + 0 * labelInterval, 240, 60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labeltag->SetTextColor(Color::Green());
-        InitLabel(labeltime, 146, startY_Value + 1 * labelInterval, 240, 60, "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labeltime->SetTextColor(Color::Red());
-        InitLabel(labelheart, 146, startY_Value + 2 * labelInterval, 240, 60, "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelheart->SetTextColor(Color::Yellow());
-        InitLabel(labelstrong, 146, startY_Value + 3 * labelInterval, 240, 60, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
-        labelstrong->SetTextColor(Color::Red());
-
-        scrollView_->Add(labeltype);
-        scrollView_->Add(labelsport);
-        scrollView_->Add(labeltime);
-        scrollView_->Add(labelutag);
-        scrollView_->Add(labelutime);
-        scrollView_->Add(labeluheart);
-        scrollView_->Add(labelustrong);
-
-        scrollView_->Add(labeltag);
-        scrollView_->Add(labelduration);
-        scrollView_->Add(labelheart);
-        scrollView_->Add(labelstrong);
-
-#if UI_UPDATA
-        InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 2, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 4, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        labelumile->SetTextColor(textColor);
-        labelusteps->SetTextColor(textColor);
-
-        InitLabel(labelmile, 146, startY_Value + 2 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelmile->SetTextColor(Color::Blue());
-        InitLabel(labelsteps, 146, startY_Value + 4 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelsteps->SetTextColor(Color::Green());
-
-        scrollView_->Add(labelumile);
-        scrollView_->Add(labelusteps);
-        scrollView_->Add(labelmile);
-        scrollView_->Add(labelsteps);
-#endif
-    }
-    /* InitView:初始化界面*/
-    void TraingEnddataView ::InitView()
-    {
+  return g_pTraingEnddataView;
+}
+
+// 初始化图像
+void TraingEnddataView ::InitializeImageViews() {
+  // 初始化主图标
+  InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+                WALKING_54_IMAGE);
+
+  InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+                LINE_IMAGE); // imageLine2
+  InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+                LINE_IMAGE); // imageLine3
+  InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+                LINE_IMAGE); // imageLine4
+  InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+                LINE_IMAGE); // imageLine5
+
+  bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+  if (isincludeTag) {
+    InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image7",
+                  LINE_IMAGE);
+    scrollView_->Add(imageLine6);
+  }
+
+  scrollView_->Add(imageLine2);
+  scrollView_->Add(imageLine3);
+  scrollView_->Add(imageLine4);
+  scrollView_->Add(imageLine5);
+
+  scrollView_->Add(imageIcon);
+}
+/*
+    InitView:初始化界面
+
+    普通运动:
+                时长,平均心率,训练强度,卡路里,目标完成度
+    算法支持运动:
+                时长,平均心率,训练强度,卡路里,目标完成度
+                距离,步数,平均配速,步幅,步频,
+
+    蓝色:距离、平均配速
+    黄色:训练时长
+    橙色:平均心率、训练强度
+    绿色:步数,步幅,步频,平均配速,卡路里,目标完成度
+*/
+void TraingEnddataView ::InitializeLabels() {
+
+  /*title and sport*/
+  InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走",
+            DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12",
+            DEFAULT_VECTOR_FONT_FILENAME, 28);
+  // 初始化Label
+  //时长
+  InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 0, 240, 40,
+                "label8", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labeltime, 146, startY_Value + 0 * labelInterval, 240, 60,
+            "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labeltime->SetTextColor(Color::Yellow());
+  //平均心率
+  InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 1, 240, 40,
+                "label9", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelheart, 146, startY_Value + 1 * labelInterval, 240, 60,
+            "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelheart->SetTextColor(Color::Orange());
+  // 训练强度
+  InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 2, 240, 40,
+                "label11", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelstrong, 146, startY_Value + 2 * labelInterval, 240, 60,
+            "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
+  labelstrong->SetTextColor(Color::Orange());
+  //卡路里
+  InitRollLabel(labelucalorie, 146, startY_Unit + labelInterval * 3, 240, 40,
+                "label2", STR_CALORIE_SETTING, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelcalories, 146, startY_Value + 3 * labelInterval, 240, 60,
+            "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelcalories->SetTextColor(Color::Green());
+
+  //目标完成度
+  bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+  if (isincludeTag) {
+    InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 4, 240, 40,
+                  "label10", STR_GOAL_ACCOMPLISHMENT_DEGREE,
+                  DEFAULT_VECTOR_FONT_FILENAME, 30);
+    labelutag->SetTextColor(textColor);
+    InitLabel(labeltag, 146, startY_Value + 4 * labelInterval, 240, 60,
+              "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+    labeltag->SetTextColor(Color::Green());
+    scrollView_->Add(labelutag);
+    scrollView_->Add(labeltag);
+  }
+
+  // 设置文本颜色
+  labelduration->SetTextColor(textColor);
+  labelutime->SetTextColor(textColor);
+  labeluheart->SetTextColor(textColor);
+  labelustrong->SetTextColor(textColor);
+  labelucalorie->SetTextColor(textColor);
+
+  scrollView_->Add(labeltype);
+  scrollView_->Add(labelsport);
+  scrollView_->Add(labeltime);
+
+  scrollView_->Add(labelutime);
+  scrollView_->Add(labeluheart);
+  scrollView_->Add(labelustrong);
+  scrollView_->Add(labelucalorie);
+
+  scrollView_->Add(labelduration);
+  scrollView_->Add(labelheart);
+  scrollView_->Add(labelstrong);
+  scrollView_->Add(labelcalories);
+}
+// 增加额外配置
+void TraingEnddataView::BonusdataView() {
+  if (!TraingModel::GetInstance()->GetIsSpecial())
+    return;
+
+  bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+  int tagflge = isincludeTag ? 1 : 0;
+
+  // 初始化线条
+
+  InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+                "image8", LINE_IMAGE); // imageLine8
+  InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+                "image9", LINE_IMAGE); // imageLine9
+  InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+                "image10", LINE_IMAGE); // imageLine10
+  InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+                "image11", LINE_IMAGE);
+  InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+                "image7", LINE_IMAGE);
+
+  scrollView_->Add(imageLine8);
+  scrollView_->Add(imageLine9);
+  scrollView_->Add(imageLine10);
+  scrollView_->Add(imageLine11);
+  scrollView_->Add(imageLine12);
+
+  // 初始化标签
+  // 距离
+  InitRollLabel(labelumile, 146, startY_Unit + labelInterval * (4 + tagflge),
+                240, 40, "label10", STR_RANGE_MILE,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelmile, 146, startY_Value + (4 + tagflge) * labelInterval, 240,
+            60, "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelumile->SetTextColor(textColor);
+  labelmile->SetTextColor(Color::Blue());
+
+  // 步数
+  InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * (5 + tagflge),
+                240, 40, "label12", STR_STEP_NUMBER,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelsteps, 146, startY_Value + (5 + tagflge) * labelInterval, 240,
+            60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelusteps->SetTextColor(textColor);
+  labelsteps->SetTextColor(Color::Green());
+
+  // 平均配速
+  InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * (6 + tagflge),
+                240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelavpace, 146, startY_Value + (6 + tagflge) * labelInterval, 240,
+            60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labeluavpace->SetTextColor(textColor);
+  labelavpace->SetTextColor(Color::Green());
+
+  // 步幅
+  InitRollLabel(labelustride, 146, startY_Unit + labelInterval * (7 + tagflge),
+                240, 40, "label2", STR_STEP_LENGTH,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelstride, 146, startY_Value + (7 + tagflge) * labelInterval, 240,
+            60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelustride->SetTextColor(textColor);
+  labelstride->SetTextColor(Color::Green());
+
+  // 步频
+  InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * (8 + tagflge),
+                240, 40, "label2", STR_STEP_FREQUENCY,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelfreq, 146, startY_Value + (8 + tagflge) * labelInterval, 240,
+            60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
+  labelufreq->SetTextColor(textColor);
+  labelfreq->SetTextColor(Color::Green());
+
+  scrollView_->Add(labelumile);
+  scrollView_->Add(labelmile);
+  scrollView_->Add(labelusteps);
+  scrollView_->Add(labelsteps);
+  scrollView_->Add(labeluavpace);
+  scrollView_->Add(labelavpace);
+  scrollView_->Add(labelustride);
+  scrollView_->Add(labelstride);
+  scrollView_->Add(labelufreq);
+  scrollView_->Add(labelfreq);
+}
+// 配置退出相关位置
+void TraingEnddataView::ExitView() {
+
+  bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+  int tagflge = isincludeTag ? 1 : 0;
+
+  if (TraingModel::GetInstance()->GetIsSpecial()) {
+    // 初始化退出(最后 要根据前方配置设置位置)
+    // 是否为特殊运动
+    // 是否包含目标
+    InitRollLabel(exitLabel, 80,
+                  (startY_Value + labelInterval * (8 + tagflge) + 120), 300, 40,
+                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(exitButton, 42,
+                  (startY_Value + labelInterval * (8 + tagflge) + 220), 380,
+                  100, BUTTONBACK, STR_CLOSE, 30);
+  } else {
+    InitRollLabel(exitLabel, 80,
+                  (startY_Value + labelInterval * (3 + tagflge) + 120), 300, 40,
+                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(exitButton, 42,
+                  (startY_Value + labelInterval * (3 + tagflge) + 220), 380,
+                  100, BUTTONBACK, STR_CLOSE, 30);
+  }
+  exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+  scrollView_->Add(exitLabel);
+  exitButton->SetOnClickListener(presenter_);
+  scrollView_->Add(exitButton);
+}
+void TraingEnddataView ::InitView() {
 
-        scrollView_ = new UIScrollView();
+  scrollView_ = new UIScrollView();
 
-        scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        scrollView_->SetScrollBlankSize(50);
-        // scrollView_->SetReboundSize(35);
-        scrollView_->SetHorizontalScrollState(false);
-        scrollView_->RequestFocus();
-        scrollView_->SetRotateFactor(1.0);
-        scrollView_->SetMaxScrollDistance(1000);
-        scrollView_->SetDragACCLevel(5);
-        scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
-        scrollView_->SetTouchable(true);
-        scrollView_->SetDraggable(true);
+  scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+                           Screen::GetInstance().GetHeight());
+  scrollView_->SetScrollBlankSize(100);
+  scrollView_->SetReboundSize(50);
+  scrollView_->SetHorizontalScrollState(false);
+  scrollView_->RequestFocus();
+  scrollView_->SetRotateFactor(1.0);
+  scrollView_->SetMaxScrollDistance(1000);
+  scrollView_->SetDragACCLevel(5);
+  scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
+  scrollView_->SetTouchable(true);
+  scrollView_->SetDraggable(true);
 
-        /*初始化线条*/
-        InitializeImageViews();
+  /*初始化线条*/
+  InitializeImageViews();
 
-        /*初始化label*/
-        InitializeLabels();
+  /*初始化label*/
+  InitializeLabels();
 
-        BonusdataView(); // 配置额外数据
+  BonusdataView(); // 配置额外数据
 
-        ExitView(); // 配置退出组件
+  ExitView(); // 配置退出组件
 
-        container_->Add(scrollView_);
-    }
-    // 增加额外配置
-    void TraingEnddataView::BonusdataView()
+  container_->Add(scrollView_);
+}
+
+/* DeInit:删除组件 */
+void TraingEnddataView::DeInit() {
+  scrollView_->RemoveAll();
+
+  /*单位label*/
+  delete labelutime;
+  labelutime = nullptr;
+  delete labelutag;
+  labelutag = nullptr;
+  delete labelusteps;
+  labelusteps = nullptr;
+  delete labelumile;
+  labelumile = nullptr;
+  delete labeluheart;
+  labeluheart = nullptr;
+  delete labelustrong;
+  labelustrong = nullptr;
+  delete labeluavpace;
+  labeluavpace = nullptr;
+  delete labelufreq;
+  labelufreq = nullptr;
+  delete labelustride;
+  labelustride = nullptr;
+
+  /*值label*/
+  delete labeltype;
+  labeltype = nullptr;
+  delete labelsport;
+  labelsport = nullptr;
+  delete labelduration;
+  labelduration = nullptr;
+  delete labeltag;
+  labeltag = nullptr;
+  delete labeltime;
+  labeltime = nullptr;
+  delete labelmile;
+  labelmile = nullptr;
+  delete labelheart;
+  labelheart = nullptr;
+  delete labelstrong;
+  labelstrong = nullptr;
+  delete labelsteps;
+  labelsteps = nullptr;
+  delete labelavpace;
+  labelavpace = nullptr;
+  delete labelfreq;
+  labelfreq = nullptr;
+  delete labelstride;
+  labelstride = nullptr;
+
+  /*图片label*/
+  delete imageIcon;
+  imageIcon = nullptr;
+  delete imageLine2;
+  imageLine2 = nullptr;
+  delete imageLine3;
+  imageLine3 = nullptr;
+  delete imageLine4;
+  imageLine4 = nullptr;
+  delete imageLine5;
+  imageLine5 = nullptr;
+  delete imageLine6;
+  imageLine6 = nullptr;
+  delete imageLine8;
+  imageLine8 = nullptr;
+  delete imageLine9;
+  imageLine9 = nullptr;
+  delete imageLine10;
+  imageLine10 = nullptr;
+
+  /*退出相关*/
+  delete exitButton;
+  exitButton = nullptr;
+  delete exitLabel;
+  exitLabel = nullptr;
+
+  delete scrollView_;
+  scrollView_ = nullptr;
+}
+
+void TraingEnddataView::PreLoad(void) {
+  if (!viewiInitStatus) {
+    InitView();
+    viewiInitStatus = true;
+  }
+}
+
+void TraingEnddataView::InitData() {
+  SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+
+  if (enddata == nullptr) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                  "Enddata is nullptr. Exiting InitData()...\r\n");
+    return;
+  }
+
+  // 训练图标Icon
+  std::string imageStr =
+      TraingModel::GetInstance()->GetSportType(enddata->sportType);
+  if (!imageStr.empty()) {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n",
+                  imageStr.c_str());
+    if (imageIcon) // 检查 imageIcon 是否为空
     {
-        if (!TraingModel::GetInstance()->GetIsSpecial())
-            return;
-#if UI_UPDATA
-        /*线条*/
-        InitImageView(imageLine8, 97, baseY + 6 * lineHeight, 80, 20, "image8", LINE_IMAGE);   // imageLine8
-        InitImageView(imageLine9, 97, baseY + 7 * lineHeight, 80, 20, "image9", LINE_IMAGE);   // imageLine9
-        InitImageView(imageLine10, 97, baseY + 8 * lineHeight, 80, 20, "image10", LINE_IMAGE); // imageLine10
-        scrollView_->Add(imageLine8);
-        scrollView_->Add(imageLine9);
-        scrollView_->Add(imageLine10);
-        /*label*/
-        InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * 6, 240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * 7, 240, 40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelustride, 146, startY_Unit + labelInterval * 8, 240, 40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        labeluavpace->SetTextColor(textColor);
-        labelufreq->SetTextColor(textColor);
-        labelustride->SetTextColor(textColor);
-        scrollView_->Add(labeluavpace);
-        scrollView_->Add(labelufreq);
-        scrollView_->Add(labelustride);
-
-        InitLabel(labelavpace, 146, startY_Value + 6 * labelInterval, 240, 60, "label17", "5.45", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelavpace->SetTextColor(Color::Blue());
-        InitLabel(labelfreq, 146, startY_Value + 7 * labelInterval, 240, 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelfreq->SetTextColor(Color::Green());
-        InitLabel(labelstride, 146, startY_Value + 8 * labelInterval, 240, 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelstride->SetTextColor(Color::Green());
-        scrollView_->Add(labelavpace);
-        scrollView_->Add(labelfreq);
-        scrollView_->Add(labelstride);
-#else
-        InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 4, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 5, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        labelumile->SetTextColor(textColor);
-        labelusteps->SetTextColor(textColor);
-
-        InitLabel(labelmile, 146, startY_Value + 4 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelmile->SetTextColor(Color::Blue());
-        InitLabel(labelsteps, 146, startY_Value + 5 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
-        labelsteps->SetTextColor(Color::Green());
-
-        scrollView_->Add(labelumile);
-        scrollView_->Add(labelusteps);
-        scrollView_->Add(labelmile);
-        scrollView_->Add(labelsteps);
-
-        InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
-        InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
-        scrollView_->Add(imageLine6);
-        scrollView_->Add(imageLine7);
-#endif
+      imageIcon->SetSrc(imageStr.c_str());
     }
-    // 配置退出相关位置
-    void TraingEnddataView::ExitView()
+  } else {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                  "Failed to get image string. Skipping imageIcon update.\r\n");
+  }
+
+  // 训练类
+  UIResourceTextId typeId =
+      TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
+  if (labeltype) // 检查 labeltype 是否为空
+  {
+    labeltype->SetTextId(typeId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n",
+                  typeId); // 打印运动类型ID
+  }
+
+  // 运动项目
+  if (labelsport) // 检查 labelsport 是否为空
+  {
+    labelsport->SetTextId(enddata->sportId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n",
+                  enddata->sportId); // 打印运动项目ID
+  }
+
+  // 运动开始结束时间
+  std::string startTimeStr = enddata->start_time;
+  std::string endTimeStr = enddata->end_time;
+  std::string durationStr = startTimeStr + "-" + endTimeStr;
+  if (labelduration) // 检查 labelduration 是否为空
+  {
+    labelduration->SetText(durationStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n",
+                  durationStr.c_str()); // 打印运动时间段
+  }
+
+  // 运动目标
+  if (enddata->goaldegree) {
+    std::string tagStr = std::to_string(enddata->goaldegree) + "%";
+    if (labeltag) // 检查 labeltag 是否为空
     {
-        if (TraingModel::GetInstance()->GetIsSpecial())
-        {
-            // 初始化退出(最后 要根据前方配置设置位置)
-            InitRollLabel(exitLabel, 80, 1033, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-            InitButtonExt(exitButton, 42, 1083, 380, 100, BUTTONBACK, STR_CLOSE, 30);
-        }
-        else
-        {
-            InitRollLabel(exitLabel, 80, 773, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-            InitButtonExt(exitButton, 42, 823, 380, 100, BUTTONBACK, STR_CLOSE, 30);
-        }
-        exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
-        scrollView_->Add(exitLabel);
-        exitButton->SetOnClickListener(presenter_);
-        scrollView_->Add(exitButton);
+      labeltag->SetText(tagStr.c_str());
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n",
+                    tagStr.c_str()); // 打印运动目标
     }
-    /* DeInit:删除组件 */
-    void TraingEnddataView::DeInit()
+  } else {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                  "Enddata tag is null. Skipping labeltag update.\r\n");
+  }
+
+  // 运动时长
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n",
+                enddata->duration);
+  std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
+  if (labeltime) // 检查 labeltime 是否为空
+  {
+    labeltime->SetText(timeStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n",
+                  timeStr.c_str()); // 打印训练时间
+  }
+
+  // 运动距离
+  std::string mileStr = std::to_string(enddata->distance);
+  if (labelmile) // 检查 labelmile 是否为空
+  {
+    labelmile->SetText(mileStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n",
+                  mileStr.c_str()); // 打印运动距离
+  }
+
+  // 平均心率
+  std::string heartStr = std::to_string(enddata->avgheart);
+  if (labelheart) // 检查 labelheart 是否为空
+  {
+    labelheart->SetText(heartStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n",
+                  heartStr.c_str()); // 打印平均心率
+  }
+
+  // 步数
+  std::string stepStr = std::to_string(enddata->steps);
+  if (labelsteps) // 检查 labelsteps 是否为空
+  {
+    labelsteps->SetText(stepStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n",
+                  stepStr.c_str()); // 打印步数
+  }
+
+  // 训练强度
+  UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
+  if (labelstrong) // 检查 labelstrong 是否为空
+  {
+    labelstrong->SetTextId(intensityid);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n",
+                  intensityid); // 打印训练强度ID
+  }
+  //卡路里
+  std::string calStr = std::to_string(enddata->calories);
+  if (labelcalories) // 检查 labelcal 是否为空
+  {
+    labelcalories->SetText(calStr.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Calories set: %s\r\n",
+                  calStr.c_str()); // 打印卡路里
+  }
+
+  //特殊配置
+  if (TraingModel::GetInstance()->GetIsSpecial()) {
+    // 平均配速
+    // 需要计算一下 是秒 需要显示 分钟''秒''
+    int totalSeconds = enddata->apc; // 总秒数
+    int minutes = totalSeconds / 60; // 计算分钟
+    int seconds = totalSeconds % 60; // 计算剩余秒数
+    // 格式化为字符串
+    std::ostringstream oss;
+    oss << minutes << "'" << seconds << "\""; // 生成 "X'Y\"" 格式的字符串
+    std::string avpaceStr = oss.str();        // 得到字符串
+    if (labelavpace)                          // 检查标签是否为空
     {
-        scrollView_->RemoveAll();
-
-        /*单位label*/
-        delete labelutime;
-        labelutime = nullptr;
-        delete labelutag;
-        labelutag = nullptr;
-        delete labelusteps;
-        labelusteps = nullptr;
-        delete labelumile;
-        labelumile = nullptr;
-        delete labeluheart;
-        labeluheart = nullptr;
-        delete labelustrong;
-        labelustrong = nullptr;
-        delete labeluavpace;
-        labeluavpace = nullptr;
-        delete labelufreq;
-        labelufreq = nullptr;
-        delete labelustride;
-        labelustride = nullptr;
-
-        /*值label*/
-        delete labeltype;
-        labeltype = nullptr;
-        delete labelsport;
-        labelsport = nullptr;
-        delete labelduration;
-        labelduration = nullptr;
-        delete labeltag;
-        labeltag = nullptr;
-        delete labeltime;
-        labeltime = nullptr;
-        delete labelmile;
-        labelmile = nullptr;
-        delete labelheart;
-        labelheart = nullptr;
-        delete labelstrong;
-        labelstrong = nullptr;
-        delete labelsteps;
-        labelsteps = nullptr;
-        delete labelavpace;
-        labelavpace = nullptr;
-        delete labelfreq;
-        labelfreq = nullptr;
-        delete labelstride;
-        labelstride = nullptr;
-
-        /*图片label*/
-        delete imageIcon;
-        imageIcon = nullptr;
-        delete imageLine2;
-        imageLine2 = nullptr;
-        delete imageLine3;
-        imageLine3 = nullptr;
-        delete imageLine4;
-        imageLine4 = nullptr;
-        delete imageLine5;
-        imageLine5 = nullptr;
-        delete imageLine6;
-        imageLine6 = nullptr;
-        delete imageLine8;
-        imageLine8 = nullptr;
-        delete imageLine9;
-        imageLine9 = nullptr;
-        delete imageLine10;
-        imageLine10 = nullptr;
-
-        /*退出相关*/
-        delete exitButton;
-        exitButton = nullptr;
-        delete exitLabel;
-        exitLabel = nullptr;
-
-        delete scrollView_;
-        scrollView_ = nullptr;
+      labelavpace->SetText(avpaceStr.c_str());
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n",
+                    avpaceStr.c_str()); // 打印平均配速
     }
 
-    void TraingEnddataView::PreLoad(void)
+    // 步频
+    std::string freqStr = std::to_string(enddata->cdc);
+    if (labelfreq) // 检查 labelfreq 是否为空
     {
-        if (!viewiInitStatus)
-        {
-            InitView();
-            viewiInitStatus = true;
-        }
+      labelfreq->SetText(freqStr.c_str());
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n",
+                    freqStr.c_str()); // 打印步频
     }
 
-    void TraingEnddataView::InitData()
+    // 步幅
+    std::string strideStr = std::to_string(enddata->std);
+    if (labelstride) // 检查 labelstride 是否为空
     {
-        SportData *enddata = TraingModel::GetInstance()->GetSportdata();
-
-        if (enddata == nullptr)
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata is nullptr. Exiting InitData()...\r\n");
-            return;
-        }
-
-        // 训练图标Icon
-        std::string imageStr = TraingModel::GetInstance()->GetSportType(enddata->sportType);
-        if (!imageStr.empty())
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n", imageStr.c_str());
-            if (imageIcon) // 检查 imageIcon 是否为空
-            {
-                imageIcon->SetSrc(imageStr.c_str());
-            }
-        }
-        else
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Failed to get image string. Skipping imageIcon update.\r\n");
-        }
-
-        // 训练类
-        UIResourceTextId typeId = TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
-        if (labeltype) // 检查 labeltype 是否为空
-        {
-            labeltype->SetTextId(typeId);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n", typeId); // 打印运动类型ID
-        }
-
-        // 运动项目
-        if (labelsport) // 检查 labelsport 是否为空
-        {
-            labelsport->SetTextId(enddata->sportId);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n", enddata->sportId); // 打印运动项目ID
-        }
-
-        // 运动开始结束时间
-        std::string startTimeStr = enddata->start_time;
-        std::string endTimeStr = enddata->end_time;
-        std::string durationStr = startTimeStr + "-" + endTimeStr;
-        if (labelduration) // 检查 labelduration 是否为空
-        {
-            labelduration->SetText(durationStr.c_str());
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n", durationStr.c_str()); // 打印运动时间段
-        }
-
-        // 运动目标
-        if (enddata->goaldegree)
-        {
-            std::string tagStr = std::to_string(enddata->goaldegree) + "%";
-            if (labeltag) // 检查 labeltag 是否为空
-            {
-                labeltag->SetText(tagStr.c_str());
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n", tagStr.c_str()); // 打印运动目标
-            }
-        }
-        else
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata tag is null. Skipping labeltag update.\r\n");
-        }
-
-        // 运动时长
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n", enddata->duration);
-        std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
-        if (labeltime) // 检查 labeltime 是否为空
-        {
-            labeltime->SetText(timeStr.c_str());
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n", timeStr.c_str()); // 打印训练时间
-        }
-
-        // 运动距离
-        std::string mileStr = std::to_string(enddata->distance);
-        if (labelmile) // 检查 labelmile 是否为空
-        {
-            labelmile->SetText(mileStr.c_str());
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n", mileStr.c_str()); // 打印运动距离
-        }
-
-        // 平均心率
-        std::string heartStr = std::to_string(enddata->avgheart);
-        if (labelheart) // 检查 labelheart 是否为空
-        {
-            labelheart->SetText(heartStr.c_str());
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n", heartStr.c_str()); // 打印平均心率
-        }
-
-        // 步数
-        std::string stepStr = std::to_string(enddata->steps);
-        if (labelsteps) // 检查 labelsteps 是否为空
-        {
-            labelsteps->SetText(stepStr.c_str());
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n", stepStr.c_str()); // 打印步数
-        }
-
-        // 训练强度
-        UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
-        if (labelstrong) // 检查 labelstrong 是否为空
-        {
-            labelstrong->SetTextId(intensityid);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n", intensityid); // 打印训练强度ID
-        }
-
-        if (TraingModel::GetInstance()->GetIsSpecial())
-        {
-            // 平均配速
-            std::string avpaceStr = std::to_string(enddata->apc);
-            if (labelavpace) // 检查 labelavpace 是否为空
-            {
-                labelavpace->SetText(avpaceStr.c_str());
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n", avpaceStr.c_str()); // 打印平均配速
-            }
-
-            // 步频
-            std::string freqStr = std::to_string(enddata->cdc);
-            if (labelfreq) // 检查 labelfreq 是否为空
-            {
-                labelfreq->SetText(freqStr.c_str());
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n", freqStr.c_str()); // 打印步频
-            }
-
-            // 步幅
-            std::string strideStr = std::to_string(enddata->std);
-            if (labelstride) // 检查 labelstride 是否为空
-            {
-                labelstride->SetText(strideStr.c_str());
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n", strideStr.c_str()); // 打印步幅
-            }
-        }
-
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingEnddataView data initialization complete.\r\n");
+      labelstride->SetText(strideStr.c_str());
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
+                    strideStr.c_str()); // 打印步幅
     }
-    // 设置按键监听
-    static void SetKeyActListener()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
-        // 增加按键监听
-        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
-        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    }
-    void TraingEnddataView::OnStart()
-    {
-        View<TraingEnddataPresenter>::OnStart();
+  }
 
-        container_ = new UIViewGroup();
-        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                "TraingEnddataView data initialization complete.\r\n");
+}
+// 设置按键监听
+static void SetKeyActListener() {
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
+  // 增加按键监听
+  RootView::OnKeyActListener *keyactListener =
+      (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
+  RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+}
+void TraingEnddataView::OnStart() {
+  View<TraingEnddataPresenter>::OnStart();
 
-        PreLoad();
-        InitData(); // 刷新数据
+  container_ = new UIViewGroup();
+  container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+                          Screen::GetInstance().GetHeight());
 
-        SetContainerView(container_);
+  PreLoad();
+  InitData(); // 刷新数据
 
-        container_->SetDraggable(true);
-        container_->SetTouchable(true);
-        container_->SetOnDragListener(presenter_);
+  SetContainerView(container_);
 
-        SetKeyActListener();
-    }
+  container_->SetDraggable(true);
+  container_->SetTouchable(true);
+  container_->SetOnDragListener(presenter_);
 
-    void TraingEnddataView::OnSetUpView()
-    {
+  SetKeyActListener();
+}
 
-        View<TraingEnddataPresenter>::OnSetUpView();
-        Draw();
-    }
+void TraingEnddataView::OnSetUpView() {
 
-    void TraingEnddataView::OnTearDownView()
-    {
-        View<TraingEnddataPresenter>::OnTearDownView();
-        return;
-    }
+  View<TraingEnddataPresenter>::OnSetUpView();
+  Draw();
+}
 
-    void TraingEnddataView::OnStop()
-    {
-        View<TraingEnddataPresenter>::OnStop();
-        RootView::GetInstance()->ClearOnKeyActListener();
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll();
-            delete container_;
-            container_ = nullptr;
-        }
-        return;
-    }
+void TraingEnddataView::OnTearDownView() {
+  View<TraingEnddataPresenter>::OnTearDownView();
+  return;
+}
 
+void TraingEnddataView::OnStop() {
+  View<TraingEnddataPresenter>::OnStop();
+  RootView::GetInstance()->ClearOnKeyActListener();
+  if (container_ != nullptr) {
+    container_->RemoveAll();
+    delete container_;
+    container_ = nullptr;
+  }
+  return;
 }
+
+} // namespace OHOS