修复运动数据显示不连续
authorCaisking <Casiking@zhihuishixun.com>
Mon, 27 Oct 2025 10:31:17 +0000 (18:31 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Mon, 27 Oct 2025 10:31:17 +0000 (18:31 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/traing/src/TraingEnddataView.cpp
code/sdk/application/wearable/n9/nativeapp/nativeui/traing/src/TraingEnddataView.cpp

index 39ec86d..cc3a60c 100644 (file)
 
 namespace OHOS {
 
-static  int initialY = 132 ;
+static int initialY = 132;
 static const int lineHeight = 130;
 static const int iconHeight = 80;
 static const int verticalOffset = 2;
-static  int baseY = 214 ;
-static  int startY_Unit = 252 ;
-static  int startY_Value = 292 ;
+static int baseY = 214;
+static int startY_Unit = 252;
+static int startY_Value = 292;
 static const int labelHeight = 40;
 static const int labelInterval = 130;
 
@@ -60,36 +60,36 @@ void TraingEnddataView ::InitializeImageViews() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Image = initialY + height_canvas;
+  int baseY_Init_Image = baseY + height_canvas;
+  int startY_Unit_Init_Image = startY_Unit + height_canvas;
+  int startY_Value_Init_Image = startY_Value + height_canvas;
+
   // 初始化主图标
-  InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+  InitImageView(imageIcon, 80, initialY_Init_Image, 54, iconHeight, "image",
                 WALKING_54_IMAGE);
 
-  InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+  InitImageView(imageLine2, 97, baseY_Init_Image, 80, 20, "image2",
                 LINE_IMAGE); // imageLine2
-  InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+  InitImageView(imageLine3, 97, baseY_Init_Image + lineHeight, 80, 20, "image3",
                 LINE_IMAGE); // imageLine3
-  InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+  InitImageView(imageLine4, 97, baseY_Init_Image + 2 * lineHeight, 80, 20,
+                "image4",
                 LINE_IMAGE); // imageLine4
-  InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+  InitImageView(imageLine5, 97, baseY_Init_Image + 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);
+    InitImageView(imageLine6, 97, baseY_Init_Image + 4 * lineHeight, 80, 20,
+                  "image7", LINE_IMAGE);
     scrollView_->Add(imageLine6);
   }
 
@@ -122,63 +122,63 @@ void TraingEnddataView ::InitializeLabels() {
   // 如果是有gps轨迹才需要加CANVAS_SIZE
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
 
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Label = initialY + height_canvas;
+  int baseY_Init_Label = baseY + height_canvas;
+  int startY_Unit_Init_Label = startY_Unit + height_canvas;
+  int startY_Value_Init_Label = startY_Value + height_canvas;
+
+  //这两个是固定的
   InitRollLabel(labelsport, 147, 140 + height_canvas, 240, 35, "label6",
-                STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
   InitLabel(labelduration, 146, 179 + height_canvas, 240, 40, "label7",
-            "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
+    "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);
+  InitRollLabel(labelutime, 146, startY_Unit_Init_Label + labelInterval * 0,
+                240, 40, "label8", STR_TRAINING_DURATION,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labeltime, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labeluheart, 146, startY_Unit_Init_Label + labelInterval * 1,
+                240, 40, "label9", STR_MEAN_HEART_RATE_MIN,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelheart, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelustrong, 146, startY_Unit_Init_Label + labelInterval * 2,
+                240, 40, "label11", STR_TRAINING_INTENSITY,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelstrong, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelucalorie, 146, startY_Unit_Init_Label + labelInterval * 3,
+                240, 40, "label2", STR_CALORIE_SETTING,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelcalories, 146, startY_Value_Init_Label + 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,
+    InitRollLabel(labelutag, 146, startY_Unit_Init_Label + 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);
+    InitLabel(labeltag, 146, startY_Value_Init_Label + 4 * labelInterval, 240,
+              60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
     labeltag->SetTextColor(Color::Green());
     scrollView_->Add(labelutag);
     scrollView_->Add(labeltag);
@@ -204,8 +204,6 @@ void TraingEnddataView ::InitializeLabels() {
   scrollView_->Add(labelheart);
   scrollView_->Add(labelstrong);
   scrollView_->Add(labelcalories);
-
-
 }
 // 增加额外配置
 void TraingEnddataView::BonusdataView() {
@@ -214,32 +212,36 @@ void TraingEnddataView::BonusdataView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = 400;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  baseY = baseY + height_canvas;
-  startY_Unit = startY_Unit + height_canvas;
-  startY_Value = startY_Value + height_canvas;
-  
+
+  //需要局部变量 不然会重复增加
+  int baseY_Init_Bonusdata = baseY + height_canvas;
+  int startY_Unit_Init_Bonusdata = startY_Unit + height_canvas;
+  int startY_Value_Init_Bonusdata = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
   // 初始化线条
 
-  InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine8, 97,
+                baseY_Init_Bonusdata + (4 + tagflge) * lineHeight, 80, 20,
                 "image8", LINE_IMAGE); // imageLine8
-  InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine9, 97,
+                baseY_Init_Bonusdata + (5 + tagflge) * lineHeight, 80, 20,
                 "image9", LINE_IMAGE); // imageLine9
-  InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine10, 97,
+                baseY_Init_Bonusdata + (6 + tagflge) * lineHeight, 80, 20,
                 "image10", LINE_IMAGE); // imageLine10
-  InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine11, 97,
+                baseY_Init_Bonusdata + (7 + tagflge) * lineHeight, 80, 20,
                 "image11", LINE_IMAGE);
-  InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine12, 97,
+                baseY_Init_Bonusdata + (8 + tagflge) * lineHeight, 80, 20,
                 "image7", LINE_IMAGE);
 
   scrollView_->Add(imageLine8);
@@ -250,46 +252,55 @@ void TraingEnddataView::BonusdataView() {
 
   // 初始化标签
   // 距离
-  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,
+  InitRollLabel(labelumile, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (4 + tagflge), 240,
+                40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelmile, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelusteps, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (5 + tagflge), 240,
+                40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelsteps, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labeluavpace, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (6 + tagflge), 240,
+                40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelavpace, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelustride, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (7 + tagflge), 240,
+                40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelstride, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelufreq, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (8 + tagflge), 240,
+                40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelfreq, 146,
+            startY_Value_Init_Bonusdata + (8 + tagflge) * labelInterval, 240,
             60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
   labelufreq->SetTextColor(textColor);
   labelfreq->SetTextColor(Color::Green());
@@ -310,16 +321,13 @@ void TraingEnddataView::ExitView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  startY_Value = startY_Value + height_canvas;
-  
+  int startY_Value_Init_Exit = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
@@ -327,19 +335,23 @@ void TraingEnddataView::ExitView() {
     // 初始化退出(最后 要根据前方配置设置位置)
     // 是否为特殊运动
     // 是否包含目标
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (8 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (8 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   } else {
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (3 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (3 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   }
   exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
   scrollView_->Add(exitLabel);
@@ -716,23 +728,6 @@ void TraingEnddataView::InitData() {
       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
                     strideStr.c_str()); // 打印步幅
     }
-    // 判断是否需要GPS
-    if(TraingModel::GetInstance()->IsNeedGPS(enddata->sportId) == false)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
-        return;
-    }
-  #if defined(SUPPORT_GNSS)
-    //读取一下gps文件
-    std::string gpsFilePath =
-        TraingModel::GetInstance()->GetCanvasDataPath(enddata->starttime);
-    if (!gpsFilePath.empty()) {
-      if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
-        return;
-      }
-    }
-#endif
   }
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                 "TraingEnddataView data initialization complete.\r\n");
@@ -747,6 +742,27 @@ static void SetKeyActListener() {
 }
 void TraingEnddataView::OnStart() {
 
+  bool isNeedGPS = TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent());
+  // 判断是否需要GPS
+  if (isNeedGPS == true) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项需要GPS");
+#if defined(SUPPORT_GNSS)
+    // 读取一下gps文件 运动开始时间戳
+    SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+    if (enddata != nullptr) {
+      uint32_t startTimestamp = enddata->starttime;
+      std::string gpsFilePath =TraingModel::GetInstance()->GetCanvasDataPath(startTimestamp);
+      if (!gpsFilePath.empty()) {
+        if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == true) {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载成功");
+        } else {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
+        }
+      }
+    }
+#endif
+  }
+
   PreLoad();
   InitData(); // 刷新数据
 
@@ -754,17 +770,12 @@ void TraingEnddataView::OnStart() {
   GetRootContainer()->SetTouchable(true);
   GetRootContainer()->SetOnDragListener(presenter_);
 
-  SetKeyActListener();
-
-  // 判断是否需要GPS
-  if(TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent()) == false)
-  {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
+  // 检查是否有足够的GPS数据来绘制轨迹
+  if (isNeedGPS == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
     return;
   }
 #if defined(SUPPORT_GNSS)
-  ///////////////////////////gps轨迹测试//////////////////////
-  // 检查是否有足够的GPS数据来绘制轨迹
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   if (canvasData.size() >= 3) {
     canvas = new UICanvas();
@@ -777,13 +788,12 @@ void TraingEnddataView::OnStart() {
     DrawTrackSegment(canvas);
     DrawMarkers(canvas);
   } else {
-    // 数据不足,只显示提示标签
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS轨迹数据不足,不绘制轨迹");
   }
 #endif
+  SetKeyActListener();
 }
 
-
 //////////////////////////////gps轨迹测试/////////////////////////////////////
 
 std::vector<Marker> markers_ = {{{58, 18}, "起", Color::Green()},
@@ -796,7 +806,7 @@ void TraingEnddataView::GenerateTrackPoints() {
   seg1.color = Color::Blue();
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
-  
+
   //将点位赋值
   for (size_t i = 0; i < canvasData.size(); ++i) {
     seg1.points.push_back(canvasData[i]);
index 39ec86d..cc3a60c 100644 (file)
 
 namespace OHOS {
 
-static  int initialY = 132 ;
+static int initialY = 132;
 static const int lineHeight = 130;
 static const int iconHeight = 80;
 static const int verticalOffset = 2;
-static  int baseY = 214 ;
-static  int startY_Unit = 252 ;
-static  int startY_Value = 292 ;
+static int baseY = 214;
+static int startY_Unit = 252;
+static int startY_Value = 292;
 static const int labelHeight = 40;
 static const int labelInterval = 130;
 
@@ -60,36 +60,36 @@ void TraingEnddataView ::InitializeImageViews() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Image = initialY + height_canvas;
+  int baseY_Init_Image = baseY + height_canvas;
+  int startY_Unit_Init_Image = startY_Unit + height_canvas;
+  int startY_Value_Init_Image = startY_Value + height_canvas;
+
   // 初始化主图标
-  InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+  InitImageView(imageIcon, 80, initialY_Init_Image, 54, iconHeight, "image",
                 WALKING_54_IMAGE);
 
-  InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+  InitImageView(imageLine2, 97, baseY_Init_Image, 80, 20, "image2",
                 LINE_IMAGE); // imageLine2
-  InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+  InitImageView(imageLine3, 97, baseY_Init_Image + lineHeight, 80, 20, "image3",
                 LINE_IMAGE); // imageLine3
-  InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+  InitImageView(imageLine4, 97, baseY_Init_Image + 2 * lineHeight, 80, 20,
+                "image4",
                 LINE_IMAGE); // imageLine4
-  InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+  InitImageView(imageLine5, 97, baseY_Init_Image + 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);
+    InitImageView(imageLine6, 97, baseY_Init_Image + 4 * lineHeight, 80, 20,
+                  "image7", LINE_IMAGE);
     scrollView_->Add(imageLine6);
   }
 
@@ -122,63 +122,63 @@ void TraingEnddataView ::InitializeLabels() {
   // 如果是有gps轨迹才需要加CANVAS_SIZE
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
 
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Label = initialY + height_canvas;
+  int baseY_Init_Label = baseY + height_canvas;
+  int startY_Unit_Init_Label = startY_Unit + height_canvas;
+  int startY_Value_Init_Label = startY_Value + height_canvas;
+
+  //这两个是固定的
   InitRollLabel(labelsport, 147, 140 + height_canvas, 240, 35, "label6",
-                STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
   InitLabel(labelduration, 146, 179 + height_canvas, 240, 40, "label7",
-            "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
+    "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);
+  InitRollLabel(labelutime, 146, startY_Unit_Init_Label + labelInterval * 0,
+                240, 40, "label8", STR_TRAINING_DURATION,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labeltime, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labeluheart, 146, startY_Unit_Init_Label + labelInterval * 1,
+                240, 40, "label9", STR_MEAN_HEART_RATE_MIN,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelheart, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelustrong, 146, startY_Unit_Init_Label + labelInterval * 2,
+                240, 40, "label11", STR_TRAINING_INTENSITY,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelstrong, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelucalorie, 146, startY_Unit_Init_Label + labelInterval * 3,
+                240, 40, "label2", STR_CALORIE_SETTING,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelcalories, 146, startY_Value_Init_Label + 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,
+    InitRollLabel(labelutag, 146, startY_Unit_Init_Label + 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);
+    InitLabel(labeltag, 146, startY_Value_Init_Label + 4 * labelInterval, 240,
+              60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
     labeltag->SetTextColor(Color::Green());
     scrollView_->Add(labelutag);
     scrollView_->Add(labeltag);
@@ -204,8 +204,6 @@ void TraingEnddataView ::InitializeLabels() {
   scrollView_->Add(labelheart);
   scrollView_->Add(labelstrong);
   scrollView_->Add(labelcalories);
-
-
 }
 // 增加额外配置
 void TraingEnddataView::BonusdataView() {
@@ -214,32 +212,36 @@ void TraingEnddataView::BonusdataView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = 400;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  baseY = baseY + height_canvas;
-  startY_Unit = startY_Unit + height_canvas;
-  startY_Value = startY_Value + height_canvas;
-  
+
+  //需要局部变量 不然会重复增加
+  int baseY_Init_Bonusdata = baseY + height_canvas;
+  int startY_Unit_Init_Bonusdata = startY_Unit + height_canvas;
+  int startY_Value_Init_Bonusdata = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
   // 初始化线条
 
-  InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine8, 97,
+                baseY_Init_Bonusdata + (4 + tagflge) * lineHeight, 80, 20,
                 "image8", LINE_IMAGE); // imageLine8
-  InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine9, 97,
+                baseY_Init_Bonusdata + (5 + tagflge) * lineHeight, 80, 20,
                 "image9", LINE_IMAGE); // imageLine9
-  InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine10, 97,
+                baseY_Init_Bonusdata + (6 + tagflge) * lineHeight, 80, 20,
                 "image10", LINE_IMAGE); // imageLine10
-  InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine11, 97,
+                baseY_Init_Bonusdata + (7 + tagflge) * lineHeight, 80, 20,
                 "image11", LINE_IMAGE);
-  InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine12, 97,
+                baseY_Init_Bonusdata + (8 + tagflge) * lineHeight, 80, 20,
                 "image7", LINE_IMAGE);
 
   scrollView_->Add(imageLine8);
@@ -250,46 +252,55 @@ void TraingEnddataView::BonusdataView() {
 
   // 初始化标签
   // 距离
-  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,
+  InitRollLabel(labelumile, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (4 + tagflge), 240,
+                40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelmile, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelusteps, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (5 + tagflge), 240,
+                40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelsteps, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labeluavpace, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (6 + tagflge), 240,
+                40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelavpace, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelustride, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (7 + tagflge), 240,
+                40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelstride, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelufreq, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (8 + tagflge), 240,
+                40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelfreq, 146,
+            startY_Value_Init_Bonusdata + (8 + tagflge) * labelInterval, 240,
             60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
   labelufreq->SetTextColor(textColor);
   labelfreq->SetTextColor(Color::Green());
@@ -310,16 +321,13 @@ void TraingEnddataView::ExitView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  startY_Value = startY_Value + height_canvas;
-  
+  int startY_Value_Init_Exit = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
@@ -327,19 +335,23 @@ void TraingEnddataView::ExitView() {
     // 初始化退出(最后 要根据前方配置设置位置)
     // 是否为特殊运动
     // 是否包含目标
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (8 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (8 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   } else {
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (3 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (3 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   }
   exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
   scrollView_->Add(exitLabel);
@@ -716,23 +728,6 @@ void TraingEnddataView::InitData() {
       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
                     strideStr.c_str()); // 打印步幅
     }
-    // 判断是否需要GPS
-    if(TraingModel::GetInstance()->IsNeedGPS(enddata->sportId) == false)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
-        return;
-    }
-  #if defined(SUPPORT_GNSS)
-    //读取一下gps文件
-    std::string gpsFilePath =
-        TraingModel::GetInstance()->GetCanvasDataPath(enddata->starttime);
-    if (!gpsFilePath.empty()) {
-      if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
-        return;
-      }
-    }
-#endif
   }
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                 "TraingEnddataView data initialization complete.\r\n");
@@ -747,6 +742,27 @@ static void SetKeyActListener() {
 }
 void TraingEnddataView::OnStart() {
 
+  bool isNeedGPS = TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent());
+  // 判断是否需要GPS
+  if (isNeedGPS == true) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项需要GPS");
+#if defined(SUPPORT_GNSS)
+    // 读取一下gps文件 运动开始时间戳
+    SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+    if (enddata != nullptr) {
+      uint32_t startTimestamp = enddata->starttime;
+      std::string gpsFilePath =TraingModel::GetInstance()->GetCanvasDataPath(startTimestamp);
+      if (!gpsFilePath.empty()) {
+        if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == true) {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载成功");
+        } else {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
+        }
+      }
+    }
+#endif
+  }
+
   PreLoad();
   InitData(); // 刷新数据
 
@@ -754,17 +770,12 @@ void TraingEnddataView::OnStart() {
   GetRootContainer()->SetTouchable(true);
   GetRootContainer()->SetOnDragListener(presenter_);
 
-  SetKeyActListener();
-
-  // 判断是否需要GPS
-  if(TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent()) == false)
-  {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
+  // 检查是否有足够的GPS数据来绘制轨迹
+  if (isNeedGPS == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
     return;
   }
 #if defined(SUPPORT_GNSS)
-  ///////////////////////////gps轨迹测试//////////////////////
-  // 检查是否有足够的GPS数据来绘制轨迹
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   if (canvasData.size() >= 3) {
     canvas = new UICanvas();
@@ -777,13 +788,12 @@ void TraingEnddataView::OnStart() {
     DrawTrackSegment(canvas);
     DrawMarkers(canvas);
   } else {
-    // 数据不足,只显示提示标签
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS轨迹数据不足,不绘制轨迹");
   }
 #endif
+  SetKeyActListener();
 }
 
-
 //////////////////////////////gps轨迹测试/////////////////////////////////////
 
 std::vector<Marker> markers_ = {{{58, 18}, "起", Color::Green()},
@@ -796,7 +806,7 @@ void TraingEnddataView::GenerateTrackPoints() {
   seg1.color = Color::Blue();
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
-  
+
   //将点位赋值
   for (size_t i = 0; i < canvasData.size(); ++i) {
     seg1.points.push_back(canvasData[i]);
index eb743f8..cc3a60c 100644 (file)
 
 namespace OHOS {
 
-static  int initialY = 132 ;
+static int initialY = 132;
 static const int lineHeight = 130;
 static const int iconHeight = 80;
 static const int verticalOffset = 2;
-static  int baseY = 214 ;
-static  int startY_Unit = 252 ;
-static  int startY_Value = 292 ;
+static int baseY = 214;
+static int startY_Unit = 252;
+static int startY_Value = 292;
 static const int labelHeight = 40;
 static const int labelInterval = 130;
 
@@ -60,36 +60,36 @@ void TraingEnddataView ::InitializeImageViews() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Image = initialY + height_canvas;
+  int baseY_Init_Image = baseY + height_canvas;
+  int startY_Unit_Init_Image = startY_Unit + height_canvas;
+  int startY_Value_Init_Image = startY_Value + height_canvas;
+
   // 初始化主图标
-  InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+  InitImageView(imageIcon, 80, initialY_Init_Image, 54, iconHeight, "image",
                 WALKING_54_IMAGE);
 
-  InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+  InitImageView(imageLine2, 97, baseY_Init_Image, 80, 20, "image2",
                 LINE_IMAGE); // imageLine2
-  InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+  InitImageView(imageLine3, 97, baseY_Init_Image + lineHeight, 80, 20, "image3",
                 LINE_IMAGE); // imageLine3
-  InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+  InitImageView(imageLine4, 97, baseY_Init_Image + 2 * lineHeight, 80, 20,
+                "image4",
                 LINE_IMAGE); // imageLine4
-  InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+  InitImageView(imageLine5, 97, baseY_Init_Image + 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);
+    InitImageView(imageLine6, 97, baseY_Init_Image + 4 * lineHeight, 80, 20,
+                  "image7", LINE_IMAGE);
     scrollView_->Add(imageLine6);
   }
 
@@ -122,63 +122,63 @@ void TraingEnddataView ::InitializeLabels() {
   // 如果是有gps轨迹才需要加CANVAS_SIZE
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
 
-  initialY = 132 + height_canvas;
-  baseY = 214 + height_canvas;
-  startY_Unit = 252 + height_canvas;
-  startY_Value = 292 + height_canvas;
-  
+  //需要局部变量 不然会重复增加
+  int initialY_Init_Label = initialY + height_canvas;
+  int baseY_Init_Label = baseY + height_canvas;
+  int startY_Unit_Init_Label = startY_Unit + height_canvas;
+  int startY_Value_Init_Label = startY_Value + height_canvas;
+
+  //这两个是固定的
   InitRollLabel(labelsport, 147, 140 + height_canvas, 240, 35, "label6",
-                STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    STR_EXERCISE_OUTDOORRUNNING, DEFAULT_VECTOR_FONT_FILENAME, 30);
   InitLabel(labelduration, 146, 179 + height_canvas, 240, 40, "label7",
-            "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
+    "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);
+  InitRollLabel(labelutime, 146, startY_Unit_Init_Label + labelInterval * 0,
+                240, 40, "label8", STR_TRAINING_DURATION,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labeltime, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labeluheart, 146, startY_Unit_Init_Label + labelInterval * 1,
+                240, 40, "label9", STR_MEAN_HEART_RATE_MIN,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelheart, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelustrong, 146, startY_Unit_Init_Label + labelInterval * 2,
+                240, 40, "label11", STR_TRAINING_INTENSITY,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelstrong, 146, startY_Value_Init_Label + 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);
+  InitRollLabel(labelucalorie, 146, startY_Unit_Init_Label + labelInterval * 3,
+                240, 40, "label2", STR_CALORIE_SETTING,
+                DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelcalories, 146, startY_Value_Init_Label + 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,
+    InitRollLabel(labelutag, 146, startY_Unit_Init_Label + 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);
+    InitLabel(labeltag, 146, startY_Value_Init_Label + 4 * labelInterval, 240,
+              60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
     labeltag->SetTextColor(Color::Green());
     scrollView_->Add(labelutag);
     scrollView_->Add(labeltag);
@@ -204,8 +204,6 @@ void TraingEnddataView ::InitializeLabels() {
   scrollView_->Add(labelheart);
   scrollView_->Add(labelstrong);
   scrollView_->Add(labelcalories);
-
-
 }
 // 增加额外配置
 void TraingEnddataView::BonusdataView() {
@@ -214,32 +212,36 @@ void TraingEnddataView::BonusdataView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = 400;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  baseY = baseY + height_canvas;
-  startY_Unit = startY_Unit + height_canvas;
-  startY_Value = startY_Value + height_canvas;
-  
+
+  //需要局部变量 不然会重复增加
+  int baseY_Init_Bonusdata = baseY + height_canvas;
+  int startY_Unit_Init_Bonusdata = startY_Unit + height_canvas;
+  int startY_Value_Init_Bonusdata = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
   // 初始化线条
 
-  InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine8, 97,
+                baseY_Init_Bonusdata + (4 + tagflge) * lineHeight, 80, 20,
                 "image8", LINE_IMAGE); // imageLine8
-  InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine9, 97,
+                baseY_Init_Bonusdata + (5 + tagflge) * lineHeight, 80, 20,
                 "image9", LINE_IMAGE); // imageLine9
-  InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine10, 97,
+                baseY_Init_Bonusdata + (6 + tagflge) * lineHeight, 80, 20,
                 "image10", LINE_IMAGE); // imageLine10
-  InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine11, 97,
+                baseY_Init_Bonusdata + (7 + tagflge) * lineHeight, 80, 20,
                 "image11", LINE_IMAGE);
-  InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+  InitImageView(imageLine12, 97,
+                baseY_Init_Bonusdata + (8 + tagflge) * lineHeight, 80, 20,
                 "image7", LINE_IMAGE);
 
   scrollView_->Add(imageLine8);
@@ -250,46 +252,55 @@ void TraingEnddataView::BonusdataView() {
 
   // 初始化标签
   // 距离
-  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,
+  InitRollLabel(labelumile, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (4 + tagflge), 240,
+                40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelmile, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelusteps, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (5 + tagflge), 240,
+                40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelsteps, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labeluavpace, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (6 + tagflge), 240,
+                40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabel(labelavpace, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelustride, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (7 + tagflge), 240,
+                40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelstride, 146,
+            startY_Value_Init_Bonusdata + (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,
+  InitRollLabel(labelufreq, 146,
+                startY_Unit_Init_Bonusdata + labelInterval * (8 + tagflge), 240,
+                40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME,
+                30);
+  InitLabel(labelfreq, 146,
+            startY_Value_Init_Bonusdata + (8 + tagflge) * labelInterval, 240,
             60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
   labelufreq->SetTextColor(textColor);
   labelfreq->SetTextColor(Color::Green());
@@ -310,16 +321,13 @@ void TraingEnddataView::ExitView() {
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   int height_canvas = 0;
-  if(canvasData.size() > 0)
-  {
+  if (canvasData.size() > 0) {
     height_canvas = CANVAS_SIZE;
-  }
-  else
-  {
+  } else {
     height_canvas = 0;
   }
-  startY_Value = startY_Value + height_canvas;
-  
+  int startY_Value_Init_Exit = startY_Value + height_canvas;
+
   bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
   int tagflge = isincludeTag ? 1 : 0;
 
@@ -327,19 +335,23 @@ void TraingEnddataView::ExitView() {
     // 初始化退出(最后 要根据前方配置设置位置)
     // 是否为特殊运动
     // 是否包含目标
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (8 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (8 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (8 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   } else {
-    InitRollLabel(exitLabel, 80,
-                  (startY_Value + labelInterval * (3 + tagflge) + 100), 300, 40,
-                  "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
-    InitButtonExt(exitButton, 42,
-                  (startY_Value + labelInterval * (3 + tagflge) + 160), 380,
-                  100, BUTTONBACK, STR_CLOSE, 30);
+    InitRollLabel(
+        exitLabel, 80,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 100), 300, 40,
+        "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+    InitButtonExt(
+        exitButton, 42,
+        (startY_Value_Init_Exit + labelInterval * (3 + tagflge) + 160), 380,
+        100, BUTTONBACK, STR_CLOSE, 30);
   }
   exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
   scrollView_->Add(exitLabel);
@@ -716,23 +728,6 @@ void TraingEnddataView::InitData() {
       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
                     strideStr.c_str()); // 打印步幅
     }
-    // 判断是否需要GPS
-    if(TraingModel::GetInstance()->IsNeedGPS(enddata->sportId) == false)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
-        return;
-    }
-#if defined(SUPPORT_GNSS)
-    //读取一下gps文件
-    std::string gpsFilePath =
-        TraingModel::GetInstance()->GetCanvasDataPath(enddata->starttime);
-    if (!gpsFilePath.empty()) {
-      if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
-        return;
-      }
-    }
-#endif
   }
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                 "TraingEnddataView data initialization complete.\r\n");
@@ -747,6 +742,27 @@ static void SetKeyActListener() {
 }
 void TraingEnddataView::OnStart() {
 
+  bool isNeedGPS = TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent());
+  // 判断是否需要GPS
+  if (isNeedGPS == true) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项需要GPS");
+#if defined(SUPPORT_GNSS)
+    // 读取一下gps文件 运动开始时间戳
+    SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+    if (enddata != nullptr) {
+      uint32_t startTimestamp = enddata->starttime;
+      std::string gpsFilePath =TraingModel::GetInstance()->GetCanvasDataPath(startTimestamp);
+      if (!gpsFilePath.empty()) {
+        if (TraingModel::GetInstance()->LoadCanvasData(gpsFilePath) == true) {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载成功");
+        } else {
+          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gps文件加载失败");
+        }
+      }
+    }
+#endif
+  }
+
   PreLoad();
   InitData(); // 刷新数据
 
@@ -754,17 +770,12 @@ void TraingEnddataView::OnStart() {
   GetRootContainer()->SetTouchable(true);
   GetRootContainer()->SetOnDragListener(presenter_);
 
-  SetKeyActListener();
-
-  // 判断是否需要GPS
-  if(TraingModel::GetInstance()->IsNeedGPS(TraingModel::GetInstance()->GetSportEvent()) == false)
-  {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
+  // 检查是否有足够的GPS数据来绘制轨迹
+  if (isNeedGPS == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "该运动项不需要GPS");
     return;
   }
 #if defined(SUPPORT_GNSS)
-  ///////////////////////////gps轨迹测试//////////////////////
-  // 检查是否有足够的GPS数据来绘制轨迹
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
   if (canvasData.size() >= 3) {
     canvas = new UICanvas();
@@ -777,13 +788,12 @@ void TraingEnddataView::OnStart() {
     DrawTrackSegment(canvas);
     DrawMarkers(canvas);
   } else {
-    // 数据不足,只显示提示标签
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GPS轨迹数据不足,不绘制轨迹");
   }
 #endif
+  SetKeyActListener();
 }
 
-
 //////////////////////////////gps轨迹测试/////////////////////////////////////
 
 std::vector<Marker> markers_ = {{{58, 18}, "起", Color::Green()},
@@ -796,7 +806,7 @@ void TraingEnddataView::GenerateTrackPoints() {
   seg1.color = Color::Blue();
 
   std::vector<Point> canvasData = TraingModel::GetInstance()->GetCanvasData();
-  
+
   //将点位赋值
   for (size_t i = 0; i < canvasData.size(); ++i) {
     seg1.points.push_back(canvasData[i]);