修改运动的刷新方式
authorCaisking <Casiking@zhihuishixun.com>
Mon, 28 Jul 2025 11:59:10 +0000 (19:59 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Mon, 28 Jul 2025 11:59:10 +0000 (19:59 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/include/TraingCardPresenter.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/include/TraingCardView.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/src/TraingCardPresenter.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/training_card/src/TraingCardView.cpp

index 8e46e56..a0ff81f 100644 (file)
 #include "traing/training_card/include/TrainingDetailView.h"\r
 \r
 #ifdef SUPPORT_BLE_SERVICE\r
-#include <bleEvent.h>\r
-#include "bleService.h"\r
 #include "bleInstruct.h"\r
+#include "bleService.h"\r
+#include <bleEvent.h>\r
+\r
 #endif\r
 \r
 #include "components/root_view.h"\r
@@ -32,11 +33,11 @@ class TrainingDataView;
 class TrainingDetailView;\r
 class TraingModel;\r
 class TraingCardPresenter : public Presenter<TraingCardView>,\r
+                            public ModelListenerSample,\r
                             public UIView::OnClickListener,\r
                             public UIView::OnDragListener,\r
-                            public UISwipeView::OnSwipeListener,\r
-                            public RootView::OnKeyActListener,\r
-                            public ModelListenerSample {\r
+                            public ListScrollListener,\r
+                            public RootView::OnKeyActListener {\r
 public:\r
   TraingCardPresenter();\r
   virtual ~TraingCardPresenter() override;\r
@@ -46,8 +47,8 @@ public:
   void OnPause() override;\r
   void OnResume() override;\r
   void OnStop() override;\r
-  // void OnTickEvent() override;\r
-  void Notify() override;\r
+  void OnTickEvent() override;\r
+  void Notify() override {}\r
 \r
   bool OpenSensor(ExerciseClass type);\r
   bool ControlSensor(ExerciseState state);\r
@@ -59,11 +60,10 @@ public:
   void UpdateTimeOfData();\r
   void UpdateDataView();\r
 \r
-  /*蓝牙开启运动*/\r
-  #ifdef BLE_SERVER_ENABLE\r
+/*蓝牙开启运动*/\r
+#ifdef BLE_SERVER_ENABLE\r
   bool send_sport_cmd(training_ble *cmd);\r
-  #endif\r
-\r
+#endif\r
 \r
   /*控制*/\r
   void handleStartState();\r
@@ -75,12 +75,12 @@ private:
   // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
   bool OnClick(UIView &view, const ClickEvent &event) override;\r
   bool OnDrag(UIView &view, const DragEvent &event) override;\r
-  void OnSwipe(UISwipeView &view) override;\r
   bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
 \r
   int tag_ = 0;\r
   bool opensensorstuats{false};\r
   // bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+  // void OnSwipe(UISwipeView &view) override;\r
 };\r
 } // namespace OHOS\r
 \r
index a921c84..3384a39 100644 (file)
@@ -2,37 +2,39 @@
  * @Date: 2024-04-15 11:46:23\r
  * @LastEditors: Caisking 3449750381@qq.com\r
  * @LastEditTime: 2024-04-29 11:13:01\r
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h\r
+ * @FilePath:\r
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardView.h\r
  */\r
 #ifndef _TraingCard_VIEW_H\r
 #define _TraingCard_VIEW_H\r
 \r
-\r
 #include "View.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
-#include "components/ui_image_view.h"\r
+#include "components/icon_adapter.h"\r
 #include "components/ui_button.h"\r
+#include "components/ui_card_page.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_cross_view.h"\r
 #include "components/ui_image_animator.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
 #include "components/ui_label_button_ext.h"\r
-#include "components/ui_chart.h"\r
+#include "components/ui_label_ext.h"\r
 #include "components/ui_list.h"\r
-#include "components/icon_adapter.h"\r
-#include "wearable_log.h"\r
+#include "components/ui_swipe_view.h"\r
+#include "components/ui_view_group.h"\r
 #include "ohos_types.h"\r
-#include "components/ui_card_page.h"\r
-#include "traing/include/TraingModel.h"\r
-#include "uicomponents/UIComponents.h"\r
 #include "traing/Training_UiConfig.h"\r
-#include "components/ui_swipe_view.h"\r
-#include "components/ui_cross_view.h"\r
-\r
 #include "traing/include/TraingModel.h"\r
 #include "uicomponents/UIComponents.h"\r
+#include "wearable_log.h"\r
+#include <ui_scroll_view.h>\r
+\r
+\r
 #include "traing/Training_UiConfig.h"\r
+#include "traing/include/TraingModel.h"\r
 #include "traing/training_card/include/TraingCardPresenter.h"\r
+#include "uicomponents/UIComponents.h"\r
+\r
 \r
 #include "PlayersView.h"\r
 #include "traing/training_card/include/TraingDataAllView.h"\r
 #include "traing/training_card/include/TrainingDetailView.h"\r
 \r
 #include "alipay/include/AlipayModel.h"\r
-namespace OHOS\r
-{\r
+namespace OHOS {\r
 #define BUTTONEXIT "button_exit"\r
 #define BUTTONBACK "button_back"\r
 #define BUTTONWINOK "buttom_win"\r
 #define BUTTONNOTE "button_heart"\r
 \r
-    enum Control_Card\r
-    {\r
-        CONTROL = 0,\r
-        DATA,\r
-        MUSIC\r
-    };\r
-    enum PopupType\r
-    {\r
-        EndPopup,    // 结束训练弹窗\r
-        GetTagPopup, // 达到训练目标弹窗\r
-        HeartPopup,  // 达到最高心率弹窗\r
-    };\r
-    class TraingCardPresenter;\r
-    class TrainingControlView;\r
-    class TrainingDataView;\r
-    class TrainingDetailView;\r
-    class PlayersView;\r
-    class TraingCardView : public View<TraingCardPresenter>\r
-    {\r
-\r
-    public:\r
-        TraingCardView();\r
-        virtual ~TraingCardView();\r
-        static TraingCardView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-     \r
-\r
-        UICardPage *InitControlPage(void);\r
-        UICardPage *InitDataPage(void);\r
-        UICardPage *InitMusicPage(void);\r
-\r
-        UICardPage *InitDetailPage(void);\r
-\r
-        void InitView();\r
-        void DeInit();\r
-        void InitList();\r
-        void PreLoad(void);\r
-\r
-        void InitImageAnimator();\r
-        void ShowGetTagView();\r
-        void ShowEndView();\r
-        void ShowHeartView();\r
-        bool RefreshEndView();\r
-        UICrossView *GetTraingCrad();\r
-        int GetCurrentPage();\r
-        void SetPopupViewStatus(PopupType type, bool status);\r
-        UIImageAnimatorView *GetAnimator();\r
-        UILabelExt *GetHeartMaxLabel();\r
-        void SetHeartMaxLabel(int maxheart);\r
-\r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        TraingCardView(TraingCardView &&) = delete;\r
-        TraingCardView &operator=(TraingCardView &&) = delete;\r
-\r
-        UICrossView *swipe_ = nullptr;\r
-        UIScrollView *endView{nullptr};\r
-        UIScrollView *getView{nullptr};\r
-        UIScrollView *heartView{nullptr};\r
-        TrainingControlView *controlview_{nullptr}; // 控制卡片\r
-        TraingDataAllView *dataallview_{nullptr};      // 数据卡片\r
-        TrainingDetailView *DetailView{nullptr};   // 详细数据卡片\r
-        PlayersView *musicview_{nullptr};           // 音乐卡片\r
-\r
-        /*结束弹窗*/\r
-        UILabelExt *endtitle{nullptr};  // 结束弹窗title\r
-        UILabelExt *notelabel{nullptr}; // 提醒label\r
-        UILabelExt *endnote{nullptr};   // 是否结束\r
-        UILabelExt *endnotelabel{nullptr};\r
-        UIButton *exit{nullptr}; // 退出按键\r
-        UIButton *back{nullptr}; // 返回按键\r
-\r
-        /*达成训练目标弹窗*/\r
-        UILabelExt *labeltitle = nullptr;\r
-        UILabelExt *labeltag = nullptr;\r
-        UILabelExt *labelgettag = nullptr;\r
-        UILabelExt *labelpre = nullptr;\r
-        UILabelButtonExt *buttonok_ = nullptr;\r
-        UIImageAnimatorView *imageAnimator{nullptr};\r
-\r
-        /*最高心率提醒弹窗*/\r
-        UILabelExt *hearttitle = nullptr;\r
-        UILabelExt *labelnote = nullptr;\r
-        UIImageView *heartiamge = nullptr;\r
-        UILabelButtonExt *buttonnote_ = nullptr;\r
-\r
-        bool viewiInitStatus{false};\r
-        bool momentumFlag{false};\r
-\r
-        std::string winbasePath = "/user/res/Training/training_GIF/win/";\r
-        const ImageInfo **winimageInfos;\r
-        ImageAnimatorInfo *winimageAnimatorInfo{nullptr};\r
-    };\r
+enum Control_Card { CONTROL = 0, DATA, MUSIC };\r
+enum PopupType {\r
+  EndPopup,    // 结束训练弹窗\r
+  GetTagPopup, // 达到训练目标弹窗\r
+  HeartPopup,  // 达到最高心率弹窗\r
+};\r
+class TraingCardPresenter;\r
+class TrainingControlView;\r
+class TrainingDataView;\r
+class TrainingDetailView;\r
+class PlayersView;\r
+class TraingCardView : public View<TraingCardPresenter> {\r
+\r
+public:\r
+  TraingCardView();\r
+  virtual ~TraingCardView();\r
+  static TraingCardView *GetInstance(void);\r
+\r
+  void OnStart() override;\r
+\r
+  UICardPage *InitControlPage(void);\r
+  UICardPage *InitDataPage(void);\r
+  UICardPage *InitMusicPage(void);\r
+\r
+  UICardPage *InitDetailPage(void);\r
+\r
+  void InitView();\r
+  void DeInit();\r
+  void InitList();\r
+  void PreLoad(void);\r
+\r
+  void InitImageAnimator();\r
+  void ShowGetTagView();\r
+  void ShowEndView();\r
+  void ShowHeartView();\r
+  bool RefreshEndView();\r
+  UICrossView *GetTraingCrad();\r
+  int GetCurrentPage();\r
+  void SetPopupViewStatus(PopupType type, bool status);\r
+  UIImageAnimatorView *GetAnimator();\r
+  UILabelExt *GetHeartMaxLabel();\r
+  void SetHeartMaxLabel(int maxheart);\r
+\r
+private:\r
+  UIView::OnDragListener *draglistener{nullptr};\r
+  TraingCardView(TraingCardView &&) = delete;\r
+  TraingCardView &operator=(TraingCardView &&) = delete;\r
+\r
+  UICrossView *swipe_ = nullptr;\r
+  UIScrollView *endView{nullptr};\r
+  UIScrollView *getView{nullptr};\r
+  UIScrollView *heartView{nullptr};\r
+  TrainingControlView *controlview_{nullptr}; // 控制卡片\r
+  TraingDataAllView *dataallview_{nullptr};   // 数据卡片\r
+  UICardPage *DetailView{nullptr};            // 详细数据卡片\r
+  PlayersView *musicview_{nullptr};           // 音乐卡片\r
+\r
+  /*结束弹窗*/\r
+  UILabelExt *endtitle{nullptr};  // 结束弹窗title\r
+  UILabelExt *notelabel{nullptr}; // 提醒label\r
+  UILabelExt *endnote{nullptr};   // 是否结束\r
+  UILabelExt *endnotelabel{nullptr};\r
+  UIButton *exit{nullptr}; // 退出按键\r
+  UIButton *back{nullptr}; // 返回按键\r
+\r
+  /*达成训练目标弹窗*/\r
+  UILabelExt *labeltitle = nullptr;\r
+  UILabelExt *labeltag = nullptr;\r
+  UILabelExt *labelgettag = nullptr;\r
+  UILabelExt *labelpre = nullptr;\r
+  UILabelButtonExt *buttonok_ = nullptr;\r
+  UIImageAnimatorView *imageAnimator{nullptr};\r
+\r
+  /*最高心率提醒弹窗*/\r
+  UILabelExt *hearttitle = nullptr;\r
+  UILabelExt *labelnote = nullptr;\r
+  UIImageView *heartiamge = nullptr;\r
+  UILabelButtonExt *buttonnote_ = nullptr;\r
+\r
+  bool viewiInitStatus{false};\r
+  bool momentumFlag{false};\r
+\r
+  std::string winbasePath = "/user/res/Training/training_GIF/win/";\r
+  const ImageInfo **winimageInfos;\r
+  ImageAnimatorInfo *winimageAnimatorInfo{nullptr};\r
+};\r
 } // namespace OHOS\r
 #endif // TraingCard_PRESENTER_H\r
index 0174323..b557872 100644 (file)
@@ -77,7 +77,6 @@ void TraingCardPresenter::OnStart() {
 }\r
 \r
 void TraingCardPresenter::OnPause(void) {\r
-\r
   Presenter<TraingCardView>::OnPause();\r
 }\r
 \r
@@ -273,21 +272,9 @@ void TraingCardPresenter::RefreshData(SportData *sportdata) {
                 intensityid);\r
   // 释放sportdata内存\r
 }\r
-#if 0\r
-    /*刷新 time 和 data */\r
-    void TraingCardPresenter::OnTickEvent()\r
-    {\r
-        // 未开启训练 直接退出\r
-        if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
-            return;\r
-        // 刷新训练数据界面 现实时间\r
-        TrainingDataView::GetInstance()->UpdataTime();\r
-        // 刷新训练数据界面 心率 卡路里 距离 步数 训练强度 目标完成度\r
-        RefreshData();\r
-    }\r
-#endif\r
 #if 1\r
-void TraingCardPresenter::Notify(void) {\r
+/*刷新 time 和 data */\r
+void TraingCardPresenter::OnTickEvent(void) {\r
   // 如果未开启训练,直接退出\r
   if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
       view_ == nullptr) {\r
@@ -309,7 +296,30 @@ void TraingCardPresenter::Notify(void) {
     break; // 其他情况不处理\r
   }\r
 }\r
+#else\r
+void TraingCardPresenter::Notify(void) {\r
+  // 如果未开启训练,直接退出\r
+  if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General ||\r
+      view_ == nullptr) {\r
+    return;\r
+  }\r
+\r
+  Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
 \r
+  switch (cardId) {\r
+  case Control_Card::CONTROL: {\r
+    UpdateTimeOfControl(); // 更新控制界面的时间\r
+    break;\r
+  }\r
+  case Control_Card::DATA: {\r
+    UpdateDataView(); // 更新训练数据视图\r
+    break;\r
+  }\r
+  default:\r
+    break; // 其他情况不处理\r
+  }\r
+}\r
+#endif\r
 void TraingCardPresenter::UpdateDataView() {\r
   // 刷新计时\r
   UpdateTimeOfData();\r
@@ -324,7 +334,6 @@ void TraingCardPresenter::UpdateDataView() {
   SportData *sportdata = TraingModel::GetInstance()->GetSportdata();\r
   RefreshData(sportdata);\r
 }\r
-#endif\r
 /* --------------------------------- 点击事件处理\r
  * --------------------------------- */\r
 bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {\r
@@ -383,17 +392,15 @@ bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {
 \r
   return false; // 没有匹配的操作\r
 }\r
-void TraingCardPresenter::OnSwipe(UISwipeView &view) {\r
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
-  UNUSED(view);\r
-  return;\r
-}\r
+// void TraingCardPresenter::OnSwipe(UISwipeView &view) {\r
+//   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
+//   UNUSED(view);\r
+//   return;\r
+// }\r
 bool TraingCardPresenter::OnKeyAct(UIView &view, const KeyEvent &event) {\r
   /*消耗按键事件*/\r
   return true;\r
 }\r
-/* -------------------------------- 协议发起运动处理\r
- * -------------------------------- */\r
 \r
 #ifdef BLE_SERVER_ENABLE\r
 bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {\r
index da986c5..e13b8bb 100644 (file)
 #include "traing/include/TraingModel.h"\r
 #include "uicomponents/UIComponents.h"\r
 \r
+#include "common/screen.h"\r
+#include "engines/gfx/gfx_engine_manager.h"\r
+#include "engines/gfx/lite_m_gfx_engine.h"\r
+#include "gfx_utils/mem_api.h"\r
+\r
 extern "C" {\r
 void StartTimer();\r
 void StopAndResetTimer();\r
@@ -607,16 +612,8 @@ void TraingCardView ::InitView() {
   //  swipe_->HorAdd(DetailView);\r
   swipe_->VerAdd(DetailView, UICrossView::VPage::DOWN_PAGE);\r
 \r
-  swipe_->SetHorCurrentPage(Control_Card::DATA); // 设置进入索引 [数据]\r
+  swipe_->SetHorCurrentPage(Control_Card::CONTROL); // 设置进入索引 [数据]\r
 \r
-  UISwipeView::OnSwipeListener *onSwipeListener =\r
-      static_cast<UISwipeView::OnSwipeListener *>(\r
-          OHOS::TraingCardPresenter::GetInstance());\r
-  if (onSwipeListener == nullptr) {\r
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "onSwipeListener is null");\r
-    return;\r
-  }\r
-  swipe_->SetOnSwipeListener(onSwipeListener);\r
 \r
   RootView::GetInstance()->SetOnKeyActListener(presenter_);\r
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView::InitPage over");\r
@@ -777,6 +774,21 @@ void TraingCardView::OnStart() {
 \r
   AddViewToRootContainer(swipe_);\r
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "swipe_ new ok");\r
+\r
+  Draw();  \r
+#if 0\r
+  //////////////////////////////////////////\r
+  LiteMGfxEngine::GetInstance()->SyncHwDraw();\r
+  ImageInfo info = {0};\r
+  Screen::GetInstance().GetCurrentScreenBitmap(info);\r
+  FILE *fp = fopen("/user/userdata/cap.bin", "w+");\r
+  if (fp != nullptr) {\r
+    fwrite(info.data, 1, info.dataSize, fp);\r
+    fclose(fp);\r
+  }\r
+  ImageCacheFree(info);\r
+  //////////////////////////////////////////////\r
+#endif\r
 }\r
 /*设置弹窗状态*/\r
 void TraingCardView::SetPopupViewStatus(PopupType type, bool status) {\r