【心率卡片】UI 1731/1 1731/head 1732/target/1
authorCaisking <Casiking@zhihuishixun.com>
Tue, 22 Apr 2025 07:42:39 +0000 (15:42 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Tue, 22 Apr 2025 07:42:39 +0000 (15:42 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/include/HeartChartView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartChartView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heartrate/src/HeartRateCardView.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/main/src/MainViewSample.cpp

index 06db4bd..b9b2d27 100644 (file)
@@ -65,7 +65,7 @@ public:
   void CleanAllDataView();
   void UpdateChartConfig();
   void SetLastHeart();
-  UIViewGroup *GetchartGroup();
+  UIScrollView *GetchartGroup();
 
 private:
   UIImageView *maxRateIconView_{nullptr};
@@ -90,6 +90,8 @@ private:
   UILabelExt *maxheart_dynamic_2_{nullptr};
   UILabelExt *maxheart_dynamic_1_{nullptr};
   UILabelExt *minheart_dynamic_{nullptr};
+
+  UIScrollView *scrollView{nullptr};
 };
 } // namespace OHOS
 
index aabb4ce..b56dc73 100644 (file)
@@ -161,82 +161,87 @@ HeartChartView::HeartChartView() {
 }
 HeartChartView::~HeartChartView() {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartChartView::~HeartChartView");
-
-  if (displayheart_) {
-    delete displayheart_;
-    displayheart_ = nullptr;
-  }
-  if (maxheart_) {
-    delete maxheart_;
-    maxheart_ = nullptr;
-  }
-  if (minheart_) {
-    delete minheart_;
-    minheart_ = nullptr;
-  }
-  if (uheart_) {
-    delete uheart_;
-    uheart_ = nullptr;
-  }
-  if (lastheart_) {
-    delete lastheart_;
-    lastheart_ = nullptr;
-  }
-  if (maxheart_dynamic_) {
-    delete maxheart_dynamic_;
-    maxheart_dynamic_ = nullptr;
-  }
-  if (maxheart_dynamic_3_) {
-    delete maxheart_dynamic_3_;
-    maxheart_dynamic_3_ = nullptr;
-  }
-  if (maxheart_dynamic_2_) {
-    delete maxheart_dynamic_2_;
-    maxheart_dynamic_2_ = nullptr;
-  }
-  if (maxheart_dynamic_1_) {
-    delete maxheart_dynamic_1_;
-    maxheart_dynamic_1_ = nullptr;
-  }
-  if (minheart_dynamic_) {
-    delete minheart_dynamic_;
-    minheart_dynamic_ = nullptr;
-  }
-
-  if (maxRateIconView_) {
-    delete maxRateIconView_;
-    maxRateIconView_ = nullptr;
-  }
-  if (minRateIconView_) {
-    delete minRateIconView_;
-    minRateIconView_ = nullptr;
-  }
-  if (chartBackgroundView_) {
-    delete chartBackgroundView_;
-    chartBackgroundView_ = nullptr;
+  if (scrollView) {
+    scrollView->RemoveAll();
+
+    if (displayheart_) {
+      delete displayheart_;
+      displayheart_ = nullptr;
+    }
+    if (maxheart_) {
+      delete maxheart_;
+      maxheart_ = nullptr;
+    }
+    if (minheart_) {
+      delete minheart_;
+      minheart_ = nullptr;
+    }
+    if (uheart_) {
+      delete uheart_;
+      uheart_ = nullptr;
+    }
+    if (lastheart_) {
+      delete lastheart_;
+      lastheart_ = nullptr;
+    }
+    if (maxheart_dynamic_) {
+      delete maxheart_dynamic_;
+      maxheart_dynamic_ = nullptr;
+    }
+    if (maxheart_dynamic_3_) {
+      delete maxheart_dynamic_3_;
+      maxheart_dynamic_3_ = nullptr;
+    }
+    if (maxheart_dynamic_2_) {
+      delete maxheart_dynamic_2_;
+      maxheart_dynamic_2_ = nullptr;
+    }
+    if (maxheart_dynamic_1_) {
+      delete maxheart_dynamic_1_;
+      maxheart_dynamic_1_ = nullptr;
+    }
+    if (minheart_dynamic_) {
+      delete minheart_dynamic_;
+      minheart_dynamic_ = nullptr;
+    }
+
+    if (maxRateIconView_) {
+      delete maxRateIconView_;
+      maxRateIconView_ = nullptr;
+    }
+    if (minRateIconView_) {
+      delete minRateIconView_;
+      minRateIconView_ = nullptr;
+    }
+    if (chartBackgroundView_) {
+      delete chartBackgroundView_;
+      chartBackgroundView_ = nullptr;
+    }
+    if (heartIconView_) {
+      delete heartIconView_;
+      heartIconView_ = nullptr;
+    }
+
+    if (imageAnimator) {
+      imageAnimator->Stop();
+      delete imageAnimator;
+      imageAnimator = nullptr;
+    }
+
+    if (heartSerial) {
+      heartchart->ClearDataSerial();
+      delete heartSerial;
+      heartSerial = nullptr;
+    }
+
+    if (heartchart) {
+      delete heartchart;
+      heartchart = nullptr;
+    }
+
+    delete scrollView;
+    scrollView = nullptr;
   }
-  if (heartIconView_) {
-    delete heartIconView_;
-    heartIconView_ = nullptr;
-  }
-
-  if (imageAnimator) {
-    imageAnimator->Stop();
-    delete imageAnimator;
-    imageAnimator = nullptr;
-  }
-
-  if (heartSerial) {
-    heartchart->ClearDataSerial();
-    delete heartSerial;
-    heartSerial = nullptr;
-  }
-
-  if (heartchart) {
-    delete heartchart;
-    heartchart = nullptr;
-  }
-
   g_pHeartCheckView = nullptr;
 }
 HeartChartView *HeartChartView::GetInstance(void) { return g_pHeartCheckView; }
@@ -265,7 +270,7 @@ void HeartChartView::Update_data_Chart(int serialIndex) {
                   serialIndex);
     return;
   }
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始更新曲线");
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "开始更新曲线");
   /*清除原数据*/
   heartSerial->ClearData();
 
@@ -274,7 +279,8 @@ void HeartChartView::Update_data_Chart(int serialIndex) {
     heartdata[serialIndex].x = serialIndex;
     heartdata[serialIndex].y =
         HealthService::GetInstance()->GetHourlyHeartRate(serialIndex);
-     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"x:%d,y:%d\n", heartdata[serialIndex].x,heartdata[serialIndex].y);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "x:%d,y:%d\n",
+                  heartdata[serialIndex].x, heartdata[serialIndex].y);
   }
   /*重新添加*/
   heartSerial->AddPoints(heartdata, 24);
@@ -295,7 +301,7 @@ void HeartChartView::Update_data_Chart(int serialIndex) {
 
   //更新最大最小值
   SetDataTopAndBottom();
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"更新更新曲线完成");
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "更新更新曲线完成");
 }
 void HeartChartView::CleanAllDataView() {
   if (heartchart == nullptr || maxheart_ == nullptr || minheart_ == nullptr) {
@@ -383,7 +389,7 @@ void HeartChartView::HeartImageAnimator() {
   imageAnimator->SetImageAnimatorSrc(g_heartImageInfo, HEARTBEAT_IMAGE_NUM,
                                      HEARTBEAT_DELAY);
   imageAnimator->SetRepeat(true);
-  AddViewToRootContainer(imageAnimator);
+  scrollView->Add(imageAnimator);
   // imageAnimator->Start();
 }
 /*初始化心率曲线*/
@@ -409,7 +415,7 @@ void HeartChartView::InitChartView(void) {
   heartchart->SetGradientOpacity(78, 64);
 
   // Add to rootView
-  AddViewToRootContainer(heartchart);
+  scrollView->Add(heartchart);
 }
 
 //初始化label
@@ -468,16 +474,16 @@ void HeartChartView::InitChartLabel() {
   minheart_dynamic_->SetTextColor(
       Color::GetColorFromRGBA(0x33, 0x33, 0x33, 0xff));
 
-  AddViewToRootContainer(displayheart_);
-  AddViewToRootContainer(uheart_);
-  AddViewToRootContainer(lastheart_);
-  AddViewToRootContainer(minheart_);
-  AddViewToRootContainer(maxheart_);
-  AddViewToRootContainer(maxheart_dynamic_);
-  AddViewToRootContainer(maxheart_dynamic_3_);
-  AddViewToRootContainer(maxheart_dynamic_2_);
-  AddViewToRootContainer(maxheart_dynamic_1_);
-  AddViewToRootContainer(minheart_dynamic_);
+  scrollView->Add(displayheart_);
+  scrollView->Add(uheart_);
+  scrollView->Add(lastheart_);
+  scrollView->Add(minheart_);
+  scrollView->Add(maxheart_);
+  scrollView->Add(maxheart_dynamic_);
+  scrollView->Add(maxheart_dynamic_3_);
+  scrollView->Add(maxheart_dynamic_2_);
+  scrollView->Add(maxheart_dynamic_1_);
+  scrollView->Add(minheart_dynamic_);
 }
 
 void HeartChartView::InitChartImageView() {
@@ -505,9 +511,9 @@ void HeartChartView::InitChartImageView() {
   chartBackgroundView_->SetViewId("chartBackground");
   chartBackgroundView_->SetSrc(BACKGROUND_IMAGE_PATH);
 
-  AddViewToRootContainer(chartBackgroundView_);
-  AddViewToRootContainer(minRateIconView_);
-  AddViewToRootContainer(maxRateIconView_);
+  scrollView->Add(chartBackgroundView_);
+  scrollView->Add(minRateIconView_);
+  scrollView->Add(maxRateIconView_);
 
   if (heartIconView_ == nullptr) {
     heartIconView_ = new UIImageView();
@@ -517,7 +523,7 @@ void HeartChartView::InitChartImageView() {
   heartIconView_->SetViewId("heartIcon");
   heartIconView_->SetSrc(HEART_ICON_PATH);
 
-  AddViewToRootContainer(heartIconView_);
+  scrollView->Add(heartIconView_);
   heartIconView_->SetVisible(true);
 #if 0
   if (lineView_ == nullptr) {
@@ -529,7 +535,7 @@ void HeartChartView::InitChartImageView() {
   lineView_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff666666);
   lineView_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
 
-  AddViewToRootContainer(lineView_);
+  scrollView->Add(lineView_);
   lineView_->SetVisible(true);
 #endif
 }
@@ -583,6 +589,20 @@ void HeartChartView::HeartbeatImageAnimatorStop() {
 /*初始化检测界面*/
 bool HeartChartView::HeartViewInit() {
 
+  if (scrollView == nullptr) {
+    if (scrollView == nullptr) {
+      scrollView = new UIScrollView();
+      if (scrollView == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail");
+        return false;
+      }
+    }
+  }
+  scrollView->SetPosition(0, 0, 466, 466);
+  // scrollView->SetScrollBlankSize(50);
+  // scrollView->SetReboundSize(35);
+  // scrollView->SetDirection(UIScrollView::VERTICAL);
+
   //图片
   InitChartImageView();
   //标签
@@ -591,7 +611,7 @@ bool HeartChartView::HeartViewInit() {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartChartViewInit is ok");
   return true;
 }
-UIViewGroup *HeartChartView::GetchartGroup() {
+UIScrollView *HeartChartView::GetchartGroup() {
 
   if (!HeartViewInit()) {
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
@@ -605,13 +625,12 @@ UIViewGroup *HeartChartView::GetchartGroup() {
   SetDataTopAndBottom();
   HeartbeatImageAnimatorStart();
 
-  return GetRootContainer();
+  return scrollView;
 }
 void HeartChartView::OnStart() {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartChartView::OnStart");
   View<HeartChartPresenter>::OnStart();
 
-
   if (!HeartViewInit()) {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
                   "HeartChartView::InitHeartView fail");
@@ -629,6 +648,8 @@ void HeartChartView::OnStart() {
   RootView::OnKeyActListener *keyactListener =
       (RootView::OnKeyActListener *)OHOS::HeartChartPresenter::GetInstance();
   RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+
+  AddViewToRootContainer(scrollView);
 }
 
 } // namespace OHOS
index 1c938c0..751cc60 100644 (file)
@@ -36,7 +36,7 @@ bool HeartRateCardView::InitView(void) {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateCardView::InitView");
   heartRateCardView = new HeartChartView();
   if (heartRateCardView == nullptr) {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                   "HeartChartView::new HeartChartView fail!");
     return false;
   }
index c6bc0ef..44592f8 100644 (file)
@@ -274,12 +274,14 @@ namespace OHOS
         uint8_t cardSettingNum = presenter_->GetCardSettingCount();
         CardId *cardSettings = presenter_->GetCardSettings();
         uint8_t cardMapNumber = sizeof(CardMapper) / sizeof(CardMapper[0]);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettingNum = %d", cardSettingNum);
         for (int16_t i = 0; i < cardSettingNum; i++)
         {
             for (uint8_t j = 0; j < cardMapNumber; j++)
             {
                 if (cardSettings[i] == CardMapper[j].id)
                 {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,  "MainViewSample:: recordCard[%d]:%p", j, recordCard[j]);
                     recordCard[j] = (this->*(CardMapper[j].func))();
                     if (recordCard[j] == nullptr)
                     {