训练:修改运动目标达标的动画
authorCaisking <3449750381@qq.com>
Wed, 9 Oct 2024 09:38:07 +0000 (17:38 +0800)
committerCaisking <3449750381@qq.com>
Wed, 9 Oct 2024 09:38:07 +0000 (17:38 +0800)
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardView.cpp

index 2c3c710..c8c740a 100644 (file)
@@ -314,6 +314,41 @@ namespace OHOS
     static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE_27 = APP_RES_PATH "/assistant/assistant_gif/assistant_28.bin";  
     static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE_28 = APP_RES_PATH "/assistant/assistant_gif/assistant_29.bin";  
     static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE_29 = APP_RES_PATH "/assistant/assistant_gif/assistant_30.bin";
+    /*运动目标达成*/
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_01 = APP_RES_PATH "/Training/training_GIF/win_gif/win_01.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_02 = APP_RES_PATH "/Training/training_GIF/win_gif/win_02.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_03 = APP_RES_PATH "/Training/training_GIF/win_gif/win_03.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_04 = APP_RES_PATH "/Training/training_GIF/win_gif/win_04.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_05 = APP_RES_PATH "/Training/training_GIF/win_gif/win_05.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_06 = APP_RES_PATH "/Training/training_GIF/win_gif/win_06.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_07 = APP_RES_PATH "/Training/training_GIF/win_gif/win_07.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_08 = APP_RES_PATH "/Training/training_GIF/win_gif/win_08.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_09 = APP_RES_PATH "/Training/training_GIF/win_gif/win_09.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_10 = APP_RES_PATH "/Training/training_GIF/win_gif/win_10.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_11 = APP_RES_PATH "/Training/training_GIF/win_gif/win_11.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_12 = APP_RES_PATH "/Training/training_GIF/win_gif/win_12.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_13 = APP_RES_PATH "/Training/training_GIF/win_gif/win_13.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_14 = APP_RES_PATH "/Training/training_GIF/win_gif/win_14.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_15 = APP_RES_PATH "/Training/training_GIF/win_gif/win_15.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_16 = APP_RES_PATH "/Training/training_GIF/win_gif/win_16.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_17 = APP_RES_PATH "/Training/training_GIF/win_gif/win_17.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_18 = APP_RES_PATH "/Training/training_GIF/win_gif/win_18.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_19 = APP_RES_PATH "/Training/training_GIF/win_gif/win_19.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_20 = APP_RES_PATH "/Training/training_GIF/win_gif/win_20.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_21 = APP_RES_PATH "/Training/training_GIF/win_gif/win_21.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_22 = APP_RES_PATH "/Training/training_GIF/win_gif/win_22.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_23 = APP_RES_PATH "/Training/training_GIF/win_gif/win_23.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_24 = APP_RES_PATH "/Training/training_GIF/win_gif/win_24.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_25 = APP_RES_PATH "/Training/training_GIF/win_gif/win_25.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_26 = APP_RES_PATH "/Training/training_GIF/win_gif/win_26.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_27 = APP_RES_PATH "/Training/training_GIF/win_gif/win_27.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_28 = APP_RES_PATH "/Training/training_GIF/win_gif/win_28.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_29 = APP_RES_PATH "/Training/training_GIF/win_gif/win_29.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_30 = APP_RES_PATH "/Training/training_GIF/win_gif/win_30.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_31 = APP_RES_PATH "/Training/training_GIF/win_gif/win_31.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_32 = APP_RES_PATH "/Training/training_GIF/win_gif/win_32.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_33 = APP_RES_PATH "/Training/training_GIF/win_gif/win_33.bin";  
+    static constexpr const char *PNG_TRAINING_WIN_IMAGE_34 = APP_RES_PATH "/Training/training_GIF/win_gif/win_34.bin";
     /* -------------------------------------------------------------------------- */
     static constexpr const char *PNG_ALIPAY_BIND_FAILURE = APP_RES_PATH "/alipay/ALIPAY_BIND_FAILURE.bin";
     static constexpr const char *PNG_ALIPAY_BIND_SUCCESS = APP_RES_PATH "/alipay/ALIPAY_BIND_SUCCESS.bin";
index 22f5eab..064c054 100644 (file)
@@ -469,7 +469,9 @@ void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo) {
         ui_api_vibrate_once_func();
       }
       TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, true);
-      TraingCardView::GetInstance()->GetAnimator()->Start();
+      if (!TraingCardView::GetInstance()->GetAnimator()) {
+        TraingCardView::GetInstance()->GetAnimator()->Start();
+      }
       Gettagstuats = true;
     }
   }
index 4267ca3..0011998 100644 (file)
@@ -67,6 +67,192 @@ static const uint16_t LABEL_FONT_SIZE = 200;
 static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;\r
 static const uint32_t CARD_PAGE_COLOR = 0xffd0d0d0;\r
 \r
+// 动态刷新设置\r
+static constexpr uint16_t IMAGE_SIZE_X = 120;\r
+static constexpr uint16_t IMAGE_SIZE_Y = 120;\r
+static constexpr uint16_t IMAGE_POSITION_X = 173;\r
+static constexpr uint16_t IMAGE_POSITION_Y = 100;\r
+static constexpr uint16_t DETECTION_IMAGE_ANIMATORVIEW_SIZE = 35;\r
+static constexpr uint16_t DETECTION_IMAGE_ANIMATORVIEW_SPEED = 35;\r
+\r
+static ImageAnimatorInfo g_imageAnimatorInfo_trainingwin[35] = {\r
+    {PNG_TRAINING_WIN_IMAGE_01,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_01,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_02,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_03,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_04,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_05,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_06,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_07,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_08,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_09,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_10,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_11,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_12,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_13,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_14,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_15,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_16,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_17,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_18,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_19,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_20,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_21,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_22,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_23,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_24,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_25,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_26,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_27,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_28,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_29,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_30,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_31,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_32,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_33,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+    {PNG_TRAINING_WIN_IMAGE_34,\r
+     {IMAGE_POSITION_X, IMAGE_POSITION_Y},\r
+     IMAGE_SIZE_X,\r
+     IMAGE_SIZE_Y,\r
+     IMG_SRC_FILE_PATH},\r
+};\r
+\r
 static TraingCardView *g_pTraingCardView{nullptr};\r
 \r
 TraingCardView::TraingCardView() {\r
@@ -83,9 +269,7 @@ TraingCardView::TraingCardView() {
 }\r
 \r
 TraingCardView::~TraingCardView() {\r
-  imageAnimator->Stop();\r
-  FreeImageInfoArray(winimageInfos, winbasePath.c_str(), 94);\r
-  ReleaseImageAnimatorSource(winimageAnimatorInfo, 94);\r
+  \r
   DeInit();\r
 \r
   g_pTraingCardView = nullptr;\r
@@ -148,7 +332,6 @@ void TraingCardView::DeInit() {
   /*界面*/\r
   controlview_->RemoveAll();\r
   dataallview_->RemoveAll();\r
-  // DetailView->RemoveAll();\r
   musicview_->RemoveAll();\r
   endView->RemoveAll();\r
   getView->RemoveAll();\r
@@ -190,19 +373,20 @@ void TraingCardView::DeInit() {
   buttonnote_ = nullptr;\r
 \r
   /*动画*/\r
-  delete imageAnimator;\r
-  imageAnimator = nullptr;\r
+  if (imageAnimator) {\r
+    imageAnimator->Stop();\r
+    delete imageAnimator;\r
+    imageAnimator = nullptr;\r
+  }\r
 \r
   /*卡片*/\r
   delete controlview_;\r
   controlview_ = nullptr;\r
   delete dataallview_;\r
   dataallview_ = nullptr;\r
-  // delete DetailView;\r
-  // DetailView = nullptr;\r
-  delete swipe_;\r
   delete musicview_;\r
   musicview_ = nullptr;\r
+\r
   /*弹窗*/\r
   delete endView;\r
   endView = nullptr;\r
@@ -211,6 +395,7 @@ void TraingCardView::DeInit() {
   delete heartView;\r
   heartView = nullptr;\r
 \r
+  delete swipe_;\r
   swipe_ = nullptr;\r
 }\r
 UICardPage *TraingCardView::InitControlPage(void) {\r
@@ -300,17 +485,14 @@ void TraingCardView::SetPopupViewStatus(PopupType type, bool status) {
   } else if (type == HeartPopup) {\r
     popupView = heartView;\r
   }\r
-\r
   if (popupView == nullptr) {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PopupView is NULL");\r
     return;\r
   }\r
-\r
   UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
   if (cardview != nullptr) {\r
     cardview->SetVisible(!status);\r
   }\r
-\r
   popupView->SetVisible(status);\r
 }\r
 /*结束弹窗界面*/\r
@@ -496,9 +678,20 @@ void TraingCardView::InitImageAnimator() {
   getView->Add(labeltag);\r
 \r
   // 初始化图片数组以及动画\r
-  winimageInfos = CreateImageInfoArray(winbasePath.c_str(), 94);\r
-  InitImageAnimatorSource(imageAnimator, winimageAnimatorInfo, winimageInfos,\r
-                          94, 173, 100, 120, 120, "imageAnimator1", 10);\r
+  if (imageAnimator == nullptr) {\r
+    imageAnimator = new UIImageAnimatorView();\r
+    if (imageAnimator == nullptr) {\r
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+                    "AssistantAnswerView::new UIImageAnimatorView fail");\r
+      return;\r
+    }\r
+  }\r
+  imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_trainingwin,\r
+                                     DETECTION_IMAGE_ANIMATORVIEW_SIZE,\r
+                                     DETECTION_IMAGE_ANIMATORVIEW_SPEED);\r
+  imageAnimator->SetRepeat(true);\r
+  // imageAnimator->Start();\r
+\r
   getView->Add(imageAnimator);\r
 }\r
 \r
@@ -516,6 +709,7 @@ void TraingCardView::OnTearDownView() {
 \r
 void TraingCardView::OnStop() {\r
   View<TraingCardPresenter>::OnStop();\r
+  container_ = nullptr;\r
   RootView::GetInstance()->RemoveAll();\r
   return;\r
 }\r