修改血氧部分UI,修复上滑界面bug
authorCaisking <3449750381@qq.com>
Fri, 26 Jan 2024 09:53:30 +0000 (17:53 +0800)
committerCaisking <3449750381@qq.com>
Fri, 26 Jan 2024 09:53:30 +0000 (17:53 +0800)
24 files changed:
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodCardView.h [moved from code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodView.h with 61% similarity]
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodNoteView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodOxygenView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodTestView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodWarnView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodCardView.cpp [moved from code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodView.cpp with 86% similarity]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodNoteView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodOxygenView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodTestView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodWarnView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/bloodoxygen/src/BloodBandoffView.cpp
code/sdk/application/wearable/nativeapp/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/bloodoxygen/src/BloodOxygenView.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/MainPresenterSample.h
code/sdk/application/wearable/nativeapp/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/message/src/MessageView.cpp

index 55a1d84..8b1d58c 100755 (executable)
@@ -192,7 +192,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingItemView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/src/KeyInputListener.cpp
 
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/blood/src/BloodView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/blood/src/BloodCardView.cpp
     
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dial/src/Digital_clockView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dial/src/DialView.cpp
@@ -211,7 +211,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherView.cpp
 
-    #系统
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemPresenter.cpp                       
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemView.cpp                                         
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemAboutTheWatchView.cpp                     
@@ -220,7 +220,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetView.cpp
 
-    #声音与震动
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationView.cpp      
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumePresenter.cpp           
@@ -230,7 +230,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumePresenter.cpp          
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumeView.cpp            
 
-    #显示与亮度
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessView.cpp
@@ -239,7 +239,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationView.cpp
 
-    #辅助功能
+   
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/SecondaryFunctionPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/SecondaryFunctionView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/FastTrainingAttentionPresenter.cpp
@@ -249,7 +249,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/QuickAccessPresenter.cpp            
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/QuickAccessView.cpp    
 
-    #指南针
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassCalibrationView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassModel.cpp
index 8ef146e..d7901dc 100755 (executable)
@@ -27,39 +27,40 @@ typedef enum : uint16_t
 {
     VIEW_INVALID = 0, // 无效视图
     /* ----------------------------- 每一个id对应一个slice ----------------------------- */
-    VIEW_MAIN = 1,               // 主界面
-    VIEW_SETTING,                // 设置
-    VIEW_APPLIST,                // App应用
-    VIEW_MAIN_ALARM,             // 闹钟
-    VIEW_ALARM_POP_UP,           // 闹铃界面
-    VIEW_BLUETOOTH_EARPHONE,     // 连接蓝牙耳机界面
-    VIEW_CALLER_LOG,             // 通话记录界面
-    VIEW_INCOMING_CALL,          // 来电界面
-    VIEW_BLOODOXY,               // 血氧饱和度界面
-    VIEW_COMPASS,                // 指南针界面
-    VIEW_CONNECT_PHONE,          // 连接手机界面
-    VIEW_INDOORWALK,             // 室内步行
-    VIEW_SHUTDOWN_OR_REBOOT,     // 关机或重启界面
-    VIEW_DIAL,                   // 切换表盘
-    VIEW_WEATHER,                // 天气
-    VIEW_WEATHER_REPORT,         // 气象报告
-    VIEW_FUTURE_WEATHER,         // 未来天气
-    VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败
-    VIEW_SYSTEM,                 // 系统
-    VIEW_SYSTEM_FACTORY_RESET,   // 系统:恢复出厂设置
-    VIEW_SOUND_VIBRATION,        // 声音与震动
-    VIEW_SYSTEM_VOLUME,          // 系统音量
-    VIEW_CALL_VOLUME,            // 通话音量
-    VIEW_MEDIA_VOLUME,           // 媒体音量
-    VIEW_DISPLAY_BRIGHTNESS,     // 屏幕与亮度
-    VIEW_BRIGHTNESS_CONTROL,     // 亮度调节
-    VIEW_SCREEN_DURATION,        // 亮屏时长
-    VIEW_SECONDARY_FUNCTION,     // 辅助功能
-    VIEW_QUICK_ACCESS,           // 快速访问
-    VIEW_FAST_TRAINING,          // 快速训练
-    VIEW_FAST_TRAINING_ATTENTION,// 快速训练项目选择超出提示
+    VIEW_MAIN = 1,                // 主界面
+    VIEW_SETTING,                 // 设置
+    VIEW_APPLIST,                 // App应用
+    VIEW_MAIN_ALARM,              // 闹钟
+    VIEW_ALARM_POP_UP,            // 闹铃界面
+    VIEW_BLUETOOTH_EARPHONE,      // 连接蓝牙耳机界面
+    VIEW_CALLER_LOG,              // 通话记录界面
+    VIEW_INCOMING_CALL,           // 来电界面
+    VIEW_BLOODOXY,                // 血氧饱和度界面
+    VIEW_COMPASS,                 // 指南针界面
+    VIEW_CONNECT_PHONE,           // 连接手机界面
+    VIEW_INDOORWALK,              // 室内步行
+    VIEW_SHUTDOWN_OR_REBOOT,      // 关机或重启界面
+    VIEW_WEATHER,                 // 天气
+    VIEW_WEATHER_REPORT,          // 气象报告
+    VIEW_FUTURE_WEATHER,          // 未来天气
+    VIEW_GET_WEATHER_DATA_ERROR,  // 获取天气数据失败
+    VIEW_SYSTEM,                  // 系统
+    VIEW_SYSTEM_FACTORY_RESET,    // 系统:恢复出厂设置
+    VIEW_SOUND_VIBRATION,         // 声音与震动
+    VIEW_SYSTEM_VOLUME,           // 系统音量
+    VIEW_CALL_VOLUME,             // 通话音量
+    VIEW_MEDIA_VOLUME,            // 媒体音量
+    VIEW_DISPLAY_BRIGHTNESS,      // 屏幕与亮度
+    VIEW_BRIGHTNESS_CONTROL,      // 亮度调节
+    VIEW_SCREEN_DURATION,         // 亮屏时长
+    VIEW_SECONDARY_FUNCTION,      // 辅助功能
+    VIEW_QUICK_ACCESS,            // 快速访问
+    VIEW_FAST_TRAINING,           // 快速训练
+    VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示
     /* ---------------------------------- 测试界面 ---------------------------------- */
+    VIEW_DIAL,    // 切换表盘
     VIEW_MESSAGE, // 信息通知
+    VIEW_BLOODO,  // 血氧监测
     /* -------------------------------------------------------------------------- */
     VIEW_MAIN_TEMP,     // 体温界面(暂时不用)
     VIEW_OFFLINEVOICE,  // 语音助手界面(暂时不用)
index 2b334b6..078c63c 100755 (executable)
@@ -1,4 +1,5 @@
 
+
 /***
  * @Author: Caisking 3449750381@qq.com
  * @Date: 2023-12-13 19:33:14
@@ -42,7 +43,6 @@ namespace OHOS
         void InitIndoorWalkSlice(void);
         void InitRebootSlice(void);
         void InitUISampleSlice(void);
-        void InitDialSlice(void);
         /* ----------------------------------- 天气 ----------------------------------- */
         void InitWeatherSlice(void);
         void InitWeatherReportSlice(void);
@@ -61,9 +61,12 @@ namespace OHOS
         void InitUIDisplayBrightnessSlice(void);
         void InitBrightnessControlSlice(void);
         void InitScreenDurationSlice(void);
+        /* --------------------------------测试界面------------------------------------ */
+        void InitDialSlice(void);
+        void InitBloodSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitSecondaryFunction(void);
-        void InitQuickAccessSlice(void);  
+        void InitQuickAccessSlice(void);
         void InitFastTrainingSlice(void);
         void InitFastTrainingAttentionSlice(void);
 
index 06c4d1b..77bfa4f 100755 (executable)
@@ -95,31 +95,98 @@ namespace OHOS
     static constexpr const char *PNG_BLOOD_FLOW_IMAGE_28 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_30.bin";
     static constexpr const char *PNG_BLOOD_FLOW_IMAGE_29 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_31.bin";
     static constexpr const char *PNG_BLOOD_FLOW_IMAGE_30 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_32.bin";
-    /* -------------------------------- 血氧倒计时动画图片 ------------------------------- */
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/COUNTDOWN_IMAGE_01.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/COUNTDOWN_IMAGE_02.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/COUNTDOWN_IMAGE_03.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/COUNTDOWN_IMAGE_04.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/COUNTDOWN_IMAGE_05.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/COUNTDOWN_IMAGE_06.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/COUNTDOWN_IMAGE_07.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/COUNTDOWN_IMAGE_08.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/COUNTDOWN_IMAGE_09.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/COUNTDOWN_IMAGE_10.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/COUNTDOWN_IMAGE_11.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/COUNTDOWN_IMAGE_12.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/COUNTDOWN_IMAGE_13.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/COUNTDOWN_IMAGE_14.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/COUNTDOWN_IMAGE_15.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/COUNTDOWN_IMAGE_16.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/COUNTDOWN_IMAGE_17.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/COUNTDOWN_IMAGE_18.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/COUNTDOWN_IMAGE_19.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/COUNTDOWN_IMAGE_20.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/COUNTDOWN_IMAGE_21.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/COUNTDOWN_IMAGE_22.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/COUNTDOWN_IMAGE_23.bin";
-    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/COUNTDOWN_IMAGE_24.bin";
+    /* -------------------------------- 血氧动画 ------------------------------------------------- */
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_01.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_02.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_03.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_04.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_05.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_06.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_07.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_08.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_09.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_10.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_11.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_12.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_13.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_14.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_15.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_16.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_17.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_18.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_19.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_23.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_24.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_24 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_25.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_25 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_26.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_26 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_27.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_27 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_28.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_28 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_29.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_29 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_30.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_30 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_31.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_31 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_32.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_32 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_33.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_33 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_34.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_34 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_35.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_35 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_36.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_36 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_37.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_37 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_38.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_38 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_39.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_39 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_40.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_40 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_41.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_41 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_42.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_42 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_43.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_43 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_44.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_44 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_45.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_45 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_46.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_46 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_47.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_47 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_48.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_48 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_49.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_49 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_50.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_50 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_51.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_51 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_52.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_52 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_53.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_53 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_54.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_54 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_55.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_55 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_56.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_56 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_57.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_57 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_58.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_58 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_59.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_59 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_60.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_60 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_61.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_61 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_62.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_62 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_63.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_63 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_64.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_64 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_65.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_65 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_66.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_66 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_67.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_67 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_68.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_68 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_69.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_69 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_70.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_70 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_71.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_71 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_72.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_72 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_73.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_73 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_74.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_74 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_75.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_75 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_76.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_76 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_77.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_77 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_78.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_78 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_79.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_79 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_80.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_80 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_81.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_81 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_82.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_82 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_83.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_83 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_84.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_84 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_85.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_85 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_86.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_86 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_87.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_87 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_88.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_88 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_89.bin";
+    static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_89 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_90.bin";
+
     /* ---------------------------------- 闹钟图片 ---------------------------------- */
     static constexpr const char *ALARM_ADD_BUTTON_PATH = APP_RES_PATH "/BLUE_ADD.bin";
     static constexpr const char *ALARM_CLOCK_CLOSE_ADD_PATH = APP_RES_PATH "/CLOSE_RING_CLOCK.bin";
index b822538..a356101 100755 (executable)
@@ -59,6 +59,8 @@
 
 #include "dial/include/DialPresenter.h"
 #include "dial/include/DialView.h"
+#include "blood/include/BloodCardView.h"
+
 
 #include "weather/include/MainWeatherPresenter.h"
 #include "weather/include/MainWeatherView.h"
@@ -149,11 +151,12 @@ namespace OHOS
         {VIEW_SCREEN_DURATION, &NativeLauncher::InitScreenDurationSlice},         // 亮屏时长实例化地址
 
         {VIEW_SECONDARY_FUNCTION, &NativeLauncher::InitSecondaryFunction},
-        {VIEW_QUICK_ACCESS,&NativeLauncher::InitQuickAccessSlice},                  //快速访问实例化地址
+        {VIEW_QUICK_ACCESS, &NativeLauncher::InitQuickAccessSlice}, // 快速访问实例化地址
         {VIEW_FAST_TRAINING, &NativeLauncher::InitFastTrainingSlice},
         {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
 
         {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
+        //{VIEW_BLOODOXY, &NativeLauncher::InitBloodSlice},
 
 #if 0
         {VIEW_MAIN_ACTIVITY, &NativeLauncher::InitActivitySlice},
@@ -1,15 +1,16 @@
-/***\r
+/*** \r
  * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2023-12-12 16:55:23\r
+ * @Date: 2024-01-17 19:32:15\r
  * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-01-15 17:21:42\r
- * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodView.h\r
- * @Description:\r
+ * @LastEditTime: 2024-01-26 15:33:26\r
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodCardView.h\r
+ * @Description: \r
  * @\r
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.\r
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. \r
  */\r
-#ifndef _Blood_VIEW_H\r
-#define _Blood_VIEW_H\r
+\r
+#ifndef _Blood_CARD_VIEW_H\r
+#define _Blood_CARD_VIEW_H\r
 \r
 #include "BaseView.h"\r
 #include "View.h"\r
@@ -30,13 +31,13 @@ namespace OHOS
 #define WARNING "button1"\r
 #define CHECK "button2"\r
 \r
-    class BloodView : public UICardPage\r
+    class BloodCardView : public UICardPage\r
     {\r
 \r
     public:\r
-        BloodView();\r
-        virtual ~BloodView();\r
-        static BloodView *GetInstance(void);\r
+        BloodCardView();\r
+        virtual ~BloodCardView();\r
+        static BloodCardView *GetInstance(void);\r
 \r
         bool InitView();\r
         void DeInit();\r
@@ -50,12 +51,12 @@ namespace OHOS
 \r
     private:\r
         UIView::OnDragListener *draglistener{nullptr};\r
-        BloodView(BloodView &&) = delete;\r
-        BloodView &operator=(BloodView &&) = delete;\r
+        BloodCardView(BloodCardView &&) = delete;\r
+        BloodCardView &operator=(BloodCardView &&) = delete;\r
 \r
         UIImageView *background = nullptr;\r
         UIButton *warnButton = nullptr;\r
-        UILabelButtonExt *monitorButton = nullptr;\r
+        UILabelButton *monitorButton = nullptr;\r
         UILabel *titleLabel = nullptr;\r
         UILabel *bloodLabel = nullptr;\r
         UILabel *timeLabel = nullptr;\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodNoteView.h b/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodNoteView.h
new file mode 100644 (file)
index 0000000..c54634d
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 10:36:06
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 10:36:10
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodNoteView.h
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodOxygenView.h b/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodOxygenView.h
new file mode 100644 (file)
index 0000000..a8d5095
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 10:33:51
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 10:33:55
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/include/bloodoxygenView.h
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodPresenter.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodTestView.h b/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodTestView.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodWarnView.h b/code/sdk/application/wearable/nativeapp/nativeui/blood/include/BloodWarnView.h
new file mode 100644 (file)
index 0000000..e69de29
@@ -3,13 +3,13 @@
  * @Date: 2023-12-12 16:55:23\r
  * @LastEditors: Caisking 3449750381@qq.com\r
  * @LastEditTime: 2024-01-15 17:31:26\r
- * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodView.cpp\r
+ * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodCardView.cpp\r
  * @Description:\r
  * @\r
  * @Copyright (c) 2024 by Caisking , All Rights Reserved.\r
  */\r
 \r
-#include "blood/include/BloodView.h"\r
+#include "blood/include/BloodCardView.h"\r
 \r
 #include "common/image_cache_manager.h"\r
 #include "UiConfig.h"\r
 \r
 namespace OHOS\r
 {\r
-    static BloodView *g_pBloodView{nullptr};\r
+    static BloodCardView *g_pBloodCardView{nullptr};\r
 \r
-    BloodView::BloodView()\r
+    BloodCardView::BloodCardView()\r
     {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::BloodView");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodCardView::BloodCardView");\r
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
-        g_pBloodView = this;\r
+        g_pBloodCardView = this;\r
     }\r
 \r
-    BloodView::~BloodView()\r
+    BloodCardView::~BloodCardView()\r
     {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::~BloodView");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodCardView::~BloodCardView");\r
         RemoveAll();\r
         DeInit();\r
-        g_pBloodView = nullptr;\r
+        g_pBloodCardView = nullptr;\r
     }\r
 \r
-    BloodView *BloodView::GetInstance()\r
+    BloodCardView *BloodCardView::GetInstance()\r
     {\r
-        return g_pBloodView;\r
+        return g_pBloodCardView;\r
     }\r
     /***\r
      * @description:\r
      * @return 添加按键是否成功\r
      */\r
-    bool BloodView::AddButton()\r
+    bool BloodCardView::AddButton()\r
     {\r
         // Add Button to App\r
         if (warnButton == nullptr)\r
@@ -74,7 +74,7 @@ namespace OHOS
         // Add LabelButtonExt to App\r
         if (monitorButton == nullptr)\r
         {\r
-            monitorButton = new UILabelButtonExt();\r
+            monitorButton = new UILabelButton();\r
         }\r
         monitorButton->SetPosition(118, 336); // widget's left position and top position\r
         monitorButton->Resize(230, 80);       // widget's width and height\r
@@ -95,7 +95,7 @@ namespace OHOS
      * @description:\r
      * @return 初始化标签是否成功\r
      */\r
-    bool BloodView::InitLable()\r
+    bool BloodCardView::InitLable()\r
     {\r
         // Add Label to App\r
         if (bloodLabel == nullptr)\r
@@ -163,7 +163,7 @@ namespace OHOS
      * @description:\r
      * @return 初始化背景是否成功\r
      */\r
-    bool BloodView::Initbackground()\r
+    bool BloodCardView::Initbackground()\r
     {\r
         // Add ImageView to App\r
         if (background == nullptr)\r
@@ -185,9 +185,9 @@ namespace OHOS
      * @description:\r
      * @return 是否初始化成功\r
      */\r
-    bool BloodView::InitView()\r
+    bool BloodCardView::InitView()\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool BloodView::InitView()");\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bool BloodCardView::InitView()");\r
         if (!Initbackground())\r
         {\r
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Initbackground error!\n");\r
@@ -207,7 +207,7 @@ namespace OHOS
      * @description:\r
      * @return 删除组件\r
      */\r
-    void BloodView::DeInit()\r
+    void BloodCardView::DeInit()\r
     {\r
         RemoveAll();\r
         if (background != nullptr)\r
@@ -241,7 +241,7 @@ namespace OHOS
             titleLabel = nullptr;\r
         }\r
     }\r
-    void BloodView::PreLoad(void)\r
+    void BloodCardView::PreLoad(void)\r
     {\r
         if (!viewiInitStatus)\r
         {\r
@@ -250,7 +250,7 @@ namespace OHOS
         }\r
     }\r
 \r
-    void BloodView::UnLoad(void)\r
+    void BloodCardView::UnLoad(void)\r
     {\r
     }\r
 \r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodNoteView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodNoteView.cpp
new file mode 100644 (file)
index 0000000..ecd217a
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 10:35:53
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 10:35:57
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodNoteView.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodOxygenView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodOxygenView.cpp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodPresenter.cpp
new file mode 100644 (file)
index 0000000..be39157
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 10:34:49
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 10:34:52
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodoxygenPresenter.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodTestView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodTestView.cpp
new file mode 100644 (file)
index 0000000..979cf27
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 11:06:24
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 11:06:27
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodTestView.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodWarnView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodWarnView.cpp
new file mode 100644 (file)
index 0000000..dace781
--- /dev/null
@@ -0,0 +1,10 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-01-26 10:37:57
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-26 10:38:00
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/blood/src/BloodWarnView.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
index f24fbd2..2600015 100755 (executable)
 #include "BloodBandoffView.h"
 #include "BloodOxygenModel.h"
 
-namespace OHOS {
-// 动态显示图片设置
-static constexpr uint16_t IMAGE_SIZE = 96;
-static constexpr uint16_t IMAGE_POSITION_Y = 276;
-static constexpr uint16_t IMAGE_POSITION_X = 179;
-static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 24;
-static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 40;
-
-// 标签设置
-static constexpr uint16_t LABEL_POSITION_X = 87;
-static constexpr uint16_t LABEL_POSITION_Y = 200;
-static constexpr uint16_t LABEL_POSITION_WIDTH = 288;
-static constexpr uint16_t LABEL_POSITION_HEIGHT = 50;
-
-// 图片设置
-static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131;
-static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70;
-
-static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
-static constexpr uint16_t FONT_DEFAULT_SIZE = 25;
-static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
-static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
-static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
-
-static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = {
-    {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-};
-static BloodBandoffView *g_pMainView = nullptr;
-BloodBandoffView::BloodBandoffView()
+namespace OHOS
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");
-    label = nullptr;
-    imageView = nullptr;
-    group = nullptr;
-    imageAnimator = nullptr;
-    g_pMainView = this;
-}
+    // 动态显示图片设置
+    static constexpr uint16_t IMAGE_SIZE = 180;
+    static constexpr uint16_t IMAGE_POSITION_Y = 134;
+    static constexpr uint16_t IMAGE_POSITION_X = 150;
+    static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 90;
+    static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 40;
 
-BloodBandoffView::~BloodBandoffView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView");
-    group->RemoveAll();
-    delete label;
-    delete imageView;
-    delete group;
-    delete imageAnimator;
-    label = nullptr;
-    imageView = nullptr;
-    group = nullptr;
-    imageAnimator = nullptr;
-    g_pMainView = nullptr;
-}
+    // 标签设置
+    static constexpr uint16_t LABEL_POSITION_X = 87;
+    static constexpr uint16_t LABEL_POSITION_Y = 200;
+    static constexpr uint16_t LABEL_POSITION_WIDTH = 288;
+    static constexpr uint16_t LABEL_POSITION_HEIGHT = 50;
 
-BloodBandoffView *BloodBandoffView::GetInstance(void)
-{
-    return g_pMainView;
-}
+    // 图片设置
+    static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131;
+    static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70;
 
-UIViewGroup *BloodBandoffView::GetBandoffViewGroup()
-{
-    return group;
-}
+    static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
+    static constexpr uint16_t FONT_DEFAULT_SIZE = 25;
+    static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
+    static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
+    static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
 
-UIImageAnimatorView *BloodBandoffView::GetImageAnimator()
-{
-    return imageAnimator;
-}
+    static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = {
+        {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_31, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_32, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_33, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_34, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_35, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_36, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_37, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_38, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_39, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_40, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_41, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_42, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_43, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_44, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_45, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_46, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_47, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_48, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_49, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_50, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_51, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_52, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_53, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_54, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_55, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_56, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_57, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_58, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_59, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_60, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_61, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_62, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_63, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_64, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_65, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_66, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_67, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_68, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_69, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_70, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_71, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_72, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_73, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_74, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_75, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_76, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_77, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_78, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_79, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_80, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_81, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_82, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_83, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_84, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_85, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_86, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_87, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_88, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_COUNTDOWN_TIME_IMAGE_89, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+    };
+    static BloodBandoffView *g_pMainView = nullptr;
+    BloodBandoffView::BloodBandoffView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");
+        label = nullptr;
+        imageView = nullptr;
+        group = nullptr;
+        imageAnimator = nullptr;
+        g_pMainView = this;
+    }
 
-UIViewGroup *BloodBandoffView::CreateUIViewGroup()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup");
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail");
-        return nullptr;
+    BloodBandoffView::~BloodBandoffView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView");
+        group->RemoveAll();
+        delete label;
+        delete imageView;
+        delete group;
+        delete imageAnimator;
+        label = nullptr;
+        imageView = nullptr;
+        group = nullptr;
+        imageAnimator = nullptr;
+        g_pMainView = nullptr;
     }
-    group->SetPosition(0, 0);
-    group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
 
-    label = new UILabel();
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail");
-        return nullptr;
+    BloodBandoffView *BloodBandoffView::GetInstance(void)
+    {
+        return g_pMainView;
     }
-    group->Add(label);
-    label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT);
-    label->SetText("偏紧佩戴,保持静止");
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
-    label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
 
-    imageAnimator = new UIImageAnimatorView();
-    if (imageAnimator == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail");
-        return nullptr;
+    UIViewGroup *BloodBandoffView::GetBandoffViewGroup()
+    {
+        return group;
     }
-    imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED);
-    imageAnimator->Start();
-    imageAnimator->SetRepeat(false);
-    group->Add(imageAnimator);
 
-    imageView = new UIImageView();
-    if (imageView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail");
-        return nullptr;
+    UIImageAnimatorView *BloodBandoffView::GetImageAnimator()
+    {
+        return imageAnimator;
     }
-    imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset
-    imageView->SetSrc(PNG_BLOOD_ICON_ENTER);
-    group->Add(imageView);
 
-    return group;
-}
+    UIViewGroup *BloodBandoffView::CreateUIViewGroup()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup");
+        group = new UIViewGroup();
+        if (group == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail");
+            return nullptr;
+        }
+        group->SetPosition(0, 0);
+        group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+
+        label = new UILabel();
+        if (label == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail");
+            return nullptr;
+        }
+        group->Add(label);
+        label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT);
+        label->SetText("偏紧佩戴,保持静止");
+        label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
+        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+
+        imageAnimator = new UIImageAnimatorView();
+        if (imageAnimator == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail");
+            return nullptr;
+        }
+        imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED);
+        imageAnimator->Start();
+        imageAnimator->SetRepeat(true);
+        group->Add(imageAnimator);
+
+        imageView = new UIImageView();
+        if (imageView == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail");
+            return nullptr;
+        }
+        imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset
+        imageView->SetSrc(PNG_BLOOD_ICON_ENTER);
+        group->Add(imageView);
+
+        return group;
+    }
 }
index 676165c..ca35307 100755 (executable)
@@ -89,7 +89,7 @@ bool BloodOxygenPresenter::OnClick(UIView& view, const ClickEvent& event)
     BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false);
     BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true);
     BloodBandoffView::GetInstance()->GetImageAnimator()->Stop();
-    BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeat(false);
+    BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeat(true);
     BloodBandoffView::GetInstance()->GetImageAnimator()->Start();
     BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true);
     BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false);
index c088ef0..0646019 100755 (executable)
 #include "BloodOxygenView.h"
 #include "BloodOxygenModel.h"
 
-namespace OHOS {
-// 按钮设置
-static constexpr uint16_t TESTBUTTON_ZERO = 0;
-static constexpr uint16_t TESTBUTTON_X = 167;
-static constexpr uint16_t TESTBUTTON_Y = 360;
-
-// 进度条参数设置
-static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;
-static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;
-static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;
-static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;
-static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;
-static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;
-static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;
-static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;
-static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;
-static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;
-
-// 动态刷新设置
-static constexpr uint16_t IMAGE_SIZE = 60;
-static constexpr uint16_t IMAGE_POSITION_X = 186;
-static constexpr uint16_t IMAGE_POSITION_Y = 23;
-static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;
-static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;
-
-// 血氧主图设置
-static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;
-static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;
-
-// 血氧%显示
-static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;
-static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;
-
-// 血氧柱状图
-static constexpr int16 VIEW_MAX_X = 415;
-static constexpr int16 VIEW_MIN_X = 35;
-static constexpr int16 VIEW_MAX_Y = 150;
-static constexpr int16 VIEW_MIN_Y = 0;
-static constexpr int16 VIEW_WIDTH = 7;
-static constexpr int16 VIEW_HEIGHT = 300;
-static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;
-static constexpr uint16_t VIEW_BORDER_RADIUS = 5;
-static constexpr uint16_t BORDER_OPA = 127;
-static constexpr uint16_t BORDER_WIDTH = 20;
-
-static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
-static constexpr uint16_t FONT_DEFAULT_SIZE = 20;
-static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
-static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
-static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
-static constexpr uint16_t BUTTON_LABEL_SIZE = 40;
-static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;
-static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFFFFFF;
-static constexpr uint16_t BUTTON_WIDHT2 = 120;
-static constexpr uint16_t BUTTON_HEIGHT2 = 60;
-
-// 字体大小
-static constexpr uint16_t PERCENT_FONT_SIZE = 25;
-
-static constexpr uint16_t MATH_ZERO = 0;
-
-static BloodOxygenView *g_pMainView = nullptr;
-static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {
-    {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-    {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
-};
-
-BloodOxygenView::BloodOxygenView()
+namespace OHOS
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");
-    imageViewMain = nullptr;
-    imageViewProgress = nullptr;
-    group = nullptr;
-    percent = nullptr;
-    testButton = nullptr;
-    circleProgress = nullptr;
-    imageAnimator = nullptr;
-    g_pMainView = this;
-    bloodbandoff = new BloodBandoffView();
-    if (bloodbandoff == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");
+    // 按钮设置
+    static constexpr uint16_t TESTBUTTON_ZERO = 0;
+    static constexpr uint16_t TESTBUTTON_X = 118;
+    static constexpr uint16_t TESTBUTTON_Y = 336;
+
+    // 进度条参数设置
+    static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;
+    static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;
+    static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;
+    static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;
+    static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;
+    static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;
+    static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;
+    static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;
+    static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;
+    static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;
+    static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;
+    static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;
+    static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;
+
+    // 动态刷新设置
+    static constexpr uint16_t IMAGE_SIZE = 60;
+    static constexpr uint16_t IMAGE_POSITION_X = 186;
+    static constexpr uint16_t IMAGE_POSITION_Y = 23;
+    static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;
+    static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;
+
+    // 血氧主图设置
+    static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;
+    static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;
+
+    // 血氧%显示
+    static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;
+    static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;
+
+    // 血氧柱状图
+    static constexpr int16 VIEW_MAX_X = 415;
+    static constexpr int16 VIEW_MIN_X = 35;
+    static constexpr int16 VIEW_MAX_Y = 150;
+    static constexpr int16 VIEW_MIN_Y = 0;
+    static constexpr int16 VIEW_WIDTH = 7;
+    static constexpr int16 VIEW_HEIGHT = 300;
+    static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;
+    static constexpr uint16_t VIEW_BORDER_RADIUS = 5;
+    static constexpr uint16_t BORDER_OPA = 127;
+    static constexpr uint16_t BORDER_WIDTH = 20;
+
+    static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
+    static constexpr uint16_t FONT_DEFAULT_SIZE = 20;
+    static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
+    static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
+    static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
+    static constexpr uint16_t BUTTON_LABEL_SIZE = 26;
+    static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;
+    static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xff0b1928;
+    static constexpr uint16_t BUTTON_WIDHT2 = 230;
+    static constexpr uint16_t BUTTON_HEIGHT2 = 80;
+
+    // 字体大小
+    static constexpr uint16_t PERCENT_FONT_SIZE = 25;
+
+    static constexpr uint16_t MATH_ZERO = 0;
+
+    static BloodOxygenView *g_pMainView = nullptr;
+    static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {
+        {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+        {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
+    };
+
+    BloodOxygenView::BloodOxygenView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");
+        imageViewMain = nullptr;
+        imageViewProgress = nullptr;
+        group = nullptr;
+        percent = nullptr;
+        testButton = nullptr;
+        circleProgress = nullptr;
+        imageAnimator = nullptr;
+        g_pMainView = this;
+        bloodbandoff = new BloodBandoffView();
+        if (bloodbandoff == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");
+        }
     }
-}
-
-BloodOxygenView::~BloodOxygenView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");
-    group->RemoveAll();
-    delete imageViewMain;
-    delete imageViewProgress;
-    delete group;
-    delete testButton;
-    delete percent;
-    delete circleProgress;
-    delete imageAnimator;
-    delete bloodbandoff;
-    imageViewMain = nullptr;
-    imageViewProgress = nullptr;
-    group = nullptr;
-    percent = nullptr;
-    testButton = nullptr;
-    circleProgress = nullptr;
-    imageAnimator = nullptr;
-    g_pMainView = nullptr;
-    bloodbandoff = nullptr;
-}
-
-BloodOxygenView *BloodOxygenView::GetInstance(void)
-{
-    return g_pMainView;
-}
-
-UILabel *BloodOxygenView::GetPercent()
-{
-    return percent;
-}
-
-UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()
-{
-    return group;
-}
-
-UILabelButton *BloodOxygenView::GetTestButton()
-{
-    return testButton;
-}
 
-UICircleProgress *BloodOxygenView::GetCircleProgress()
-{
-    return circleProgress;
-}
-
-UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");
-    UILabelButton* btn = new UILabelButton();
-    if (btn == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");
-        return nullptr;
+    BloodOxygenView::~BloodOxygenView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");
+        group->RemoveAll();
+        delete imageViewMain;
+        delete imageViewProgress;
+        delete group;
+        delete testButton;
+        delete percent;
+        delete circleProgress;
+        delete imageAnimator;
+        delete bloodbandoff;
+        imageViewMain = nullptr;
+        imageViewProgress = nullptr;
+        group = nullptr;
+        percent = nullptr;
+        testButton = nullptr;
+        circleProgress = nullptr;
+        imageAnimator = nullptr;
+        g_pMainView = nullptr;
+        bloodbandoff = nullptr;
     }
-    btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);
-    btn->SetText(title);
-    btn->SetTextColor(Color::Red());
-    btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
-    btn->SetAlign(TEXT_ALIGNMENT_CENTER);
-    btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
-    btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
-    btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
-    btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
-    btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
-    btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
-    UIView::OnClickListener* clickLeftListener = (UIView::OnClickListener*)OHOS::BloodOxygenPresenter::GetInstance();
-    if (clickLeftListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");
-        return nullptr;
-    }
-    btn->SetOnClickListener(clickLeftListener);
-    return btn;
-}
 
-
-bool BloodOxygenView::SetOnDragListener()
-{
-    UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::BloodOxygenPresenter::GetInstance();
-    if (dragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");
-        return false;
+    BloodOxygenView *BloodOxygenView::GetInstance(void)
+    {
+        return g_pMainView;
     }
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    group->SetOnDragListener(dragListener);
-    return true;
-}
 
-UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");
-    UIView* view = new UIView();
-    if (view ==  nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");
-        return nullptr;
-    }
-    if (x > VIEW_MAX_X || x < VIEW_MIN_X) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");
-        return nullptr;
-    }
-    if (y < VIEW_MIN_Y || y >VIEW_MAX_Y) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");
-        return nullptr;
+    UILabel *BloodOxygenView::GetPercent()
+    {
+        return percent;
     }
-    view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
-    view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity
-    view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value
-    view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
-    view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity
-    view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width
-    view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);
-    view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);
-    view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);
-    view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);
-    view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);
-    view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);
-    view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);
-    view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);
-
-    view->SetPosition(x, VIEW_HEIGHT - y);
-    view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);
-    view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset
-    view->Resize(VIEW_WIDTH, y);
-    return view;
-}
 
-UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");
-    UICircleProgress *circle = new UICircleProgress();
-    circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,
-                        CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);
-    circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);
-    circle->SetRadius(CIRCLE_PROGRESS_RADIUS);
-    circle->SetValue(CIRCLE_PROGRESS_VALUE);
-    circle->SetBackgroundStyle(STYLE_LINE_WIDTH,
-                               circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
-    circle->SetForegroundStyle(STYLE_LINE_WIDTH,
-                               circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
-    circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);
-    circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);
-    circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);
-    circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);
-    circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);
-    circle->SetLineColor(Color::Black());
-
-    return circle;
-}
-
-bool BloodOxygenView::InitImageDisplay()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");
-    imageViewMain = new UIImageView();
-    if (imageViewMain == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
-        return false;
-    }
-    imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 :  offset
-    imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);
-    group->Add(imageViewMain);
-
-    imageAnimator = new UIImageAnimatorView();
-    if (imageAnimator == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");
-        return false;
-    }
-    imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);
-    imageAnimator->Start();
-    imageAnimator->SetRepeat(true);
-    group->Add(imageAnimator);
-
-    imageViewProgress = new UIImageView();
-    if (imageViewProgress == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
-        return false;
+    UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()
+    {
+        return group;
     }
-    imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 :  offset
-    imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);
-    group->Add(imageViewProgress);
 
-    return true;
-}
+    UILabelButton *BloodOxygenView::GetTestButton()
+    {
+        return testButton;
+    }
 
-void BloodOxygenView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
-    View<BloodOxygenPresenter>::OnStart();
+    UICircleProgress *BloodOxygenView::GetCircleProgress()
+    {
+        return circleProgress;
+    }
 
+    UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");
+        UILabelButton *btn = new UILabelButton();
+        if (btn == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");
+            return nullptr;
+        }
+        btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);
+        btn->SetText(title);
+        btn->SetTextColor(Color::White());
+        btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
+        btn->SetAlign(TEXT_ALIGNMENT_CENTER);
+        btn->SetStyle(STYLE_BACKGROUND_COLOR, 0xffCD492C);
+        btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
+#if 0
+        btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
+        btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
+        btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
+        btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
+        btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
+#endif
+        UIView::OnClickListener *clickLeftListener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance();
+        if (clickLeftListener == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");
+            return nullptr;
+        }
+        btn->SetOnClickListener(clickLeftListener);
+        return btn;
+    }
 
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");
-        return;
+    bool BloodOxygenView::SetOnDragListener()
+    {
+        UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BloodOxygenPresenter::GetInstance();
+        if (dragListener == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");
+            return false;
+        }
+        group->SetDraggable(true);
+        group->SetTouchable(true);
+        group->SetOnDragListener(dragListener);
+        return true;
     }
-    group->SetPosition(MATH_ZERO, MATH_ZERO);
-    group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
 
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BloodOxygenPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+    UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");
+        UIView *view = new UIView();
+        if (view == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");
+            return nullptr;
+        }
+        if (x > VIEW_MAX_X || x < VIEW_MIN_X)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");
+            return nullptr;
+        }
+        if (y < VIEW_MIN_Y || y > VIEW_MAX_Y)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");
+            return nullptr;
+        }
+        view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
+        view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity
+        view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS);   // 5 : radius value
+        view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
+        view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA);     // 127 : border opacity
+        view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width
+        view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);
+        view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);
+        view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);
+        view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);
+        view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);
+        view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);
+        view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);
+        view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);
+
+        view->SetPosition(x, VIEW_HEIGHT - y);
+        view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);
+        view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset
+        view->Resize(VIEW_WIDTH, y);
+        return view;
+    }
 
-    if (InitImageDisplay() == false) {
-        return;
+    UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");
+        UICircleProgress *circle = new UICircleProgress();
+        circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,
+                            CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);
+        circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);
+        circle->SetRadius(CIRCLE_PROGRESS_RADIUS);
+        circle->SetValue(CIRCLE_PROGRESS_VALUE);
+        circle->SetBackgroundStyle(STYLE_LINE_WIDTH,
+                                   circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
+        circle->SetForegroundStyle(STYLE_LINE_WIDTH,
+                                   circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
+        circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);
+        circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);
+        circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);
+        circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);
+        circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);
+        circle->SetLineColor(Color::Black());
+
+        return circle;
     }
 
-    if (SetOnDragListener() == false) {
-        return;
+    bool BloodOxygenView::InitImageDisplay()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");
+        imageViewMain = new UIImageView();
+        if (imageViewMain == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
+            return false;
+        }
+        imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 :  offset
+        imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);
+        group->Add(imageViewMain);
+
+        imageAnimator = new UIImageAnimatorView();
+        if (imageAnimator == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");
+            return false;
+        }
+        imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);
+        imageAnimator->Start();
+        imageAnimator->SetRepeat(true);
+        group->Add(imageAnimator);
+
+        imageViewProgress = new UIImageView();
+        if (imageViewProgress == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
+            return false;
+        }
+        imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 :  offset
+        imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);
+        group->Add(imageViewProgress);
+
+        return true;
     }
 
-    circleProgress = CreateAndSetUICircleProgress();
-    if (circleProgress == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");
-        return;
+    void BloodOxygenView::OnStart()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
+        View<BloodOxygenPresenter>::OnStart();
+
+        group = new UIViewGroup();
+        if (group == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");
+            return;
+        }
+        group->SetPosition(MATH_ZERO, MATH_ZERO);
+        group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+
+        // 增加按键监听
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BloodOxygenPresenter::GetInstance();
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+
+        if (InitImageDisplay() == false)
+        {
+            return;
+        }
+
+        if (SetOnDragListener() == false)
+        {
+            return;
+        }
+
+        circleProgress = CreateAndSetUICircleProgress();
+        if (circleProgress == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");
+            return;
+        }
+        group->Add(circleProgress);
+
+        percent = new UILabel();
+        if (percent == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");
+            return;
+        }
+        percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,
+                             VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);
+        percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
+        percent->SetText("%97");
+        percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);
+        percent->SetTextColor(Color::White());
+        group->Add(percent);
+
+        testButton = CreateAndSetUIButton("开始检测");
+        if (testButton == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");
+            return;
+        }
+        group->Add(testButton);
+
+        if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true)
+        {
+            testButton->SetTouchable(false);
+            percent->SetText("");
+        }
+
+        BloodBandoffView::GetInstance()->CreateUIViewGroup();
+
+        RootView::GetInstance()->Add(group);
+        RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup());
+        BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
     }
-    group->Add(circleProgress);
 
-    percent = new UILabel();
-    if (percent == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");
-        return;
+    void BloodOxygenView::OnSetUpView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
+        View<BloodOxygenPresenter>::OnSetUpView();
+        Draw();
     }
-    percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,
-                         VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);
-    percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    percent->SetText("%97");
-    percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);
-    percent->SetTextColor(Color::Red());
-    group->Add(percent);
-
-    testButton = CreateAndSetUIButton("测试");
-    if (testButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");
+
+    void BloodOxygenView::OnTearDownView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView");
+        View<BloodOxygenPresenter>::OnTearDownView();
         return;
     }
-    group->Add(testButton);
 
-    if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) {
-        testButton->SetTouchable(false);
-        percent->SetText("");
+    void BloodOxygenView::OnStop()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
+        View<BloodOxygenPresenter>::OnStop();
+        RootView::GetInstance()->RemoveAll();
+        return;
     }
-
-    BloodBandoffView::GetInstance()->CreateUIViewGroup();
-
-    RootView::GetInstance()->Add(group);
-    RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup());
-    BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
-}
-
-void BloodOxygenView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
-    View<BloodOxygenPresenter>::OnSetUpView();
-    Draw();
-}
-
-
-void BloodOxygenView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView");
-    View<BloodOxygenPresenter>::OnTearDownView();
-    return;
-}
-
-void BloodOxygenView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
-    View<BloodOxygenPresenter>::OnStop();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
 }
index 554625c..c43fedb 100755 (executable)
@@ -2,7 +2,7 @@
  * @Author: Caisking 3449750381@qq.com
  * @Date: 2023-12-13 19:33:14
  * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-01-17 19:53:31
+ * @LastEditTime: 2024-01-25 16:48:46
  * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/main/include/MainPresenterSample.h
  * @Description: 
  * @
@@ -68,7 +68,7 @@ public:
     void OnStop() override;
     virtual void Notify() override;
     bool OnClick(UIView& view, const ClickEvent& event) override;
-      bool OnLongPress(UIView& view, const LongPressEvent& event) override;
+    bool OnLongPress(UIView& view, const LongPressEvent& event) override;
     virtual void OnSwipe(UISwipeView& view) override;
     void setCallback(ZoomEffect* callback)
     {
index c1da733..52d572a 100755 (executable)
@@ -29,7 +29,7 @@
 #include "PullUpDownView.h"
 #include "components/ui_cross_view.h"
 #include "dial/include/Digital_clockView.h"
-#include "blood/include/BloodView.h"
+#include "blood/include/BloodCardView.h"
 #include "traing/include/TraingView.h"
 #include "ApplistCardView.h"
 #include "weather/include/WeatherControlView.h"
@@ -89,7 +89,7 @@ namespace OHOS
         CompassControlView *compassControlView{nullptr};
         HeartRateView *heartRateView{nullptr};
         Digital_clockView *dialView{nullptr};
-        BloodView *bloodView{nullptr};
+        BloodCardView *bloodView{nullptr};
         WeatherControlView *weatherControlView{nullptr};
         TraingView *traingView{nullptr};
         ApplistCardView *applistCardView{nullptr};
index b4d46fb..a6a5973 100755 (executable)
@@ -275,11 +275,13 @@ namespace OHOS
         MessageLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
         messageView->Add(MessageLable);
         /* -------------------------------------------------------------------------- */
-        messageView->PreLoad();
+
         messageView->SetViewId("messageView");
         messageView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
         messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+        messageView->PreLoad();
         messageView->SetDraggable(false);
+        messageView->SetIntercept(true);
 #endif
 /* -------------------------------------------------------------------------- */
 #if 0
@@ -405,7 +407,7 @@ namespace OHOS
     // 主界面血氧卡片
     UICardPage *MainViewSample::InitBloodOxygenPage(void)
     {
-        bloodView = new BloodView();
+        bloodView = new BloodCardView();
         if (bloodView == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView new fail");
index cdc1f6e..9f05441 100644 (file)
@@ -174,7 +174,6 @@ namespace OHOS
         MessageList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
         Add(MessageList);
         MessageList->SetAdapter(p_MessageListAdapter);
-        MessageList->SetLoopState(true);
         MessageList->SetVisible(true);
         return true;
     }