优化省电模式退出动效
authorCaisking <3449750381@qq.com>
Tue, 20 Aug 2024 09:22:10 +0000 (17:22 +0800)
committerCaisking <3449750381@qq.com>
Tue, 20 Aug 2024 09:22:10 +0000 (17:22 +0800)
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatPresenter.h
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleModel.h
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp

index 4f142e8..a162ded 100644 (file)
@@ -36,7 +36,7 @@ namespace OHOS
         void ResetTickTimer();\r
 \r
         void ExitView(void);\r
-        uint64_t startTime{0};\r
+        void Refresh_Back_View();\r
 \r
     private:\r
         // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
@@ -45,6 +45,10 @@ namespace OHOS
         bool OnLongPress(UIView &view, const LongPressEvent &event);\r
         bool OnPress(UIView &view, const PressEvent &event);\r
         bool OnRelease(UIView &view, const ReleaseEvent &event);\r
+\r
+        uint64_t startTime{0};\r
+        int count = 3;         // 初始计数\r
+        int progressValue = 0; // 初始进度值\r
     };\r
 \r
 } // namespace OHOS\r
index b737f5f..dac8f1d 100644 (file)
@@ -59,6 +59,14 @@ namespace OHOS
 \r
         void UpdateView();\r
 \r
+        UILabel *GetCountlabel()\r
+        {\r
+            return countlabel;\r
+        }\r
+        UICircleProgress *GetBackprogress()\r
+        {\r
+            return backprogress;\r
+        }\r
     private:\r
         UIView::OnDragListener *draglistener{nullptr};\r
 \r
@@ -77,8 +85,6 @@ namespace OHOS
         UIImageView *wathchiamge{nullptr};\r
         UICircleProgress *backprogress{nullptr};\r
 \r
-        int count = 3;         // 初始计数\r
-        int progressValue = 0; // 初始进度值\r
     };\r
 } // namespace OHOS\r
 \r
index 0a0cfe6..022731b 100644 (file)
@@ -1,36 +1,36 @@
-#ifndef SAVE_ELE_MODEL_H  
-#define SAVE_ELE_MODEL_H  
+#ifndef SAVE_ELE_MODEL_H
+#define SAVE_ELE_MODEL_H
 
-namespace OHOS  
-{  
-    class SaveEleModel  
-    {  
-    public:  
-        // 获取单例实例  
-        static SaveEleModel *GetInstance();  
+namespace OHOS
+{
+    class SaveEleModel
+    {
+    public:
+        // 获取单例实例
+        static SaveEleModel *GetInstance();
 
-        // 获取充电状态  
-        int GetChargeStatus();  
+        // 获取充电状态
+        bool GetChargeStatus();
 
-        // 设置充电状态  
-        void SetChargeStatus(int chargeStatus);  
+        // 设置充电状态
+        void SetChargeStatus(bool chargeStatus);
 
-        // 获取视图状态  
-        bool GetViewState() const { return viewState; }  
+        // 获取视图状态
+        bool GetViewState() const { return viewState; }
 
-        // 设置视图状态  
-        void SetViewState(bool state) { viewState = state; }  
+        // 设置视图状态
+        void SetViewState(bool state) { viewState = state; }
 
-    private:  
-        SaveEleModel() = default;   // 默认构造函数  
-        ~SaveEleModel() {}          // 默认析构函数  
+    private:
+        SaveEleModel() = default; // 默认构造函数
+        ~SaveEleModel() {}        // 默认析构函数
 
-        SaveEleModel(const SaveEleModel &) = delete;             // 禁止拷贝构造  
-        SaveEleModel &operator=(const SaveEleModel &) = delete;  // 禁止赋值操作  
+        SaveEleModel(const SaveEleModel &) = delete;            // 禁止拷贝构造
+        SaveEleModel &operator=(const SaveEleModel &) = delete; // 禁止赋值操作
 
-        int chargeStatus_ = 0;       // 充电状态  
-        bool viewState{false};      // 视图状态  
-    };  
-}  
+        bool chargeStatus_{nullptr}; // 充电状态
+        bool viewState{false};       // 视图状态
+    };
+}
 
 #endif // SAVE_ELE_MODEL_H
\ No newline at end of file
index d1c9d32..9cb78e5 100644 (file)
@@ -1,3 +1,15 @@
+/***\r
+ * @Date: 2024-04-15 10:55:58\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-20 16:29:53\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp\r
+ */\r
+/***\r
+ * @Date: 2024-04-15 10:55:58\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-20 16:28:11\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp\r
+ */\r
 /***\r
  * @Date: 2024-04-15 10:55:58\r
  * @LastEditors: Caisking 3449750381@qq.com\r
@@ -51,6 +63,7 @@ namespace OHOS
 \r
     void SaveBatPresenter::OnStart()\r
     {\r
+        SaveEleModel::GetInstance()->SetChargeStatus(false);\r
         Presenter<SaveBatView>::OnStart();\r
     }\r
 \r
@@ -73,7 +86,6 @@ namespace OHOS
     bool SaveBatPresenter::OnDrag(UIView &view, const DragEvent &event)\r
     {\r
         UNUSED(view);\r
-        // 返回 true 以消耗拖动事件\r
         return true;\r
     }\r
 \r
@@ -85,14 +97,11 @@ namespace OHOS
             bool state = SaveEleModel::GetInstance()->GetViewState();\r
             SaveEleModel::GetInstance()->SetViewState(!state);\r
             SaveBatView::GetInstance()->UpdateView();\r
-            ResetTickTimer();\r
         }\r
         return true;\r
     }\r
     bool SaveBatPresenter::OnLongPress(UIView &view, const LongPressEvent &event)\r
     {\r
-        // 2.退出 button1NativeAbility::GetInstance().ChangeSlice(VIEW_SAVEELE);\r
-        // 3.返回 true 以消耗点击事件\r
         if (strcmp(view.GetViewId(), "button_exit") == 0)\r
         {\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
@@ -101,6 +110,23 @@ namespace OHOS
     }\r
     bool SaveBatPresenter::OnPress(UIView &view, const PressEvent &event)\r
     {\r
+        if (strcmp(view.GetViewId(), "button_exit") == 0)\r
+        {\r
+            /*\r
+                uint64_t current_time = osKernelGetTick2ms();\r
+                SaveBatView::GetInstance()->Refresh_Back_View();\r
+                if (IS_TIME_EXCEED(startTime, current_time))\r
+                {\r
+                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
+            }\r
+            */\r
+            if (SaveEleModel::GetInstance()->GetViewState() == false)\r
+            {\r
+                SaveEleModel::GetInstance()->SetViewState(true);\r
+                SaveBatView::GetInstance()->UpdateView();\r
+                ResetTickTimer();\r
+            }\r
+        }\r
         return true;\r
     }\r
     bool SaveBatPresenter::OnRelease(UIView &view, const ReleaseEvent &event)\r
@@ -110,12 +136,16 @@ namespace OHOS
             /*释放*/\r
             SaveEleModel::GetInstance()->SetViewState(false);\r
             SaveBatView::GetInstance()->UpdateView();\r
+            /*重置*/\r
+            progressValue = 0;\r
+            count = 3;\r
         }\r
         return true;\r
     }\r
     void SaveBatPresenter::ExitView(void)\r
     {\r
-        bool isCharging = get_charge_stat(); // 获取充电状态\r
+        bool isCharging = SaveEleModel::GetInstance()->GetChargeStatus(); // 获取充电状态\r
+        // 如果省电模式中发生充电变化->进行退出\r
         if (isCharging)\r
         {\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
@@ -133,18 +163,44 @@ namespace OHOS
         }\r
         else if (SaveEleModel::GetInstance()->GetViewState() == true)\r
         {\r
-            if (IS_TIME_MATCH(startTime, current_time, ONE_SECOND))\r
+            Refresh_Back_View();\r
+        }\r
+    }\r
+    void SaveBatPresenter::ResetTickTimer(void)\r
+    {\r
+        startTime = osKernelGetTick2ms();\r
+    }\r
+    /* 更新退出UI */\r
+    void SaveBatPresenter::Refresh_Back_View()\r
+    {\r
+        if (SaveBatView::GetInstance()->GetCountlabel() == nullptr || SaveBatView::GetInstance()->GetBackprogress() == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: countlabel or backprogress is null.");\r
+            return;\r
+        }\r
+\r
+        if (count > 0) // 确保不会减少到负数\r
+        {\r
+            // 每次调用时尝试更新进度值\r
+            progressValue++;\r
+\r
+            // 更新计数并检查进度值\r
+            if (progressValue == 50 || progressValue == 75 || progressValue == 100)\r
             {\r
-                SaveBatView::GetInstance()->Refresh_Back_View();\r
+                count--;\r
+                SaveBatView::GetInstance()->GetCountlabel()->SetText(std::to_string(count).c_str());\r
             }\r
-            if (IS_TIME_EXCEED(startTime, current_time))\r
+\r
+            // 根据最大值进行检查以避免进度条越界\r
+            if (progressValue >= 100) // 假设进度最大值为100\r
             {\r
                 NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
             }\r
+            else\r
+            {\r
+                SaveBatView::GetInstance()->GetBackprogress()->SetValue(progressValue);\r
+            }\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, progressValue);\r
         }\r
     }\r
-    void SaveBatPresenter::ResetTickTimer(void)\r
-    {\r
-        startTime = osKernelGetTick2ms();\r
-    }\r
 }
\ No newline at end of file
index b23d978..4874809 100644 (file)
@@ -92,39 +92,12 @@ namespace OHOS
         uint8_t value = battery_get_voltage(&voltage);\r
 \r
         // 更新界面组件\r
-\r
         timelabel->SetText(stringtime.c_str());\r
         datelabel->SetText(dateStr.c_str());\r
         batterylabel->SetText((std::to_string(value) + "%").c_str());\r
         batteryprogress->SetValue(value);\r
     }\r
 \r
-    /* 更新退出UI */\r
-    void SaveBatView::Refresh_Back_View()\r
-    {\r
-        if (countlabel == nullptr || backprogress == nullptr)\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: countlabel or backprogress is null.");\r
-            return;\r
-        }\r
-\r
-        if (count > 0) // 确保不会减少到负数\r
-        {\r
-            count--;\r
-            progressValue += 33;\r
-\r
-            countlabel->SetText(std::to_string(count).c_str());\r
-            backprogress->SetValue(progressValue);\r
-\r
-            // 根据最大值进行检查以避免进度条越界\r
-            if (progressValue > 100) // 假设进度最大值为100\r
-            {\r
-                progressValue = 100; // 限制在最大值\r
-            }\r
-\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, progressValue);\r
-        }\r
-    }\r
     void SaveBatView::InitBatteryView()\r
     {\r
         // 创建电池框图像\r
@@ -226,8 +199,9 @@ namespace OHOS
         button_exit->SetImageSrc(SAVE_BUTTON, SAVE_BUTTON);\r
         button_exit->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
 \r
-        button_exit->SetOnLongPressListener(presenter_);\r
-        button_exit->SetOnClickListener(presenter_);\r
+        // button_exit->SetOnLongPressListener(presenter_);\r
+        // button_exit->SetOnClickListener(presenter_);\r
+        button_exit->SetOnTouchListener(presenter_);\r
         container_->Add(button_exit);\r
     }\r
     void SaveBatView::InitShowBackView()\r
@@ -272,10 +246,10 @@ namespace OHOS
         backprogress->SetPosition(143, 143);\r
         backprogress->Resize(183, 186);\r
         backprogress->SetViewId("circleProgress1");\r
-        backprogress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        backprogress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        backprogress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);                   // 确保背景透明\r
+        backprogress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0x00000000); // 背景颜色设置为完全透明\r
         backprogress->SetBackgroundStyle(STYLE_LINE_WIDTH, 20);\r
-        backprogress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);\r
+        backprogress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
         backprogress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);\r
         backprogress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff18ef05);\r
         backprogress->SetForegroundStyle(STYLE_LINE_WIDTH, 20);\r
@@ -293,7 +267,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "wathchiamge creation failed");\r
             return;\r
         }\r
-        wathchiamge->SetPosition(188, 182);\r
+        wathchiamge->SetPosition(191, 182);\r
         wathchiamge->Resize(100, 100);\r
         wathchiamge->SetViewId("image1");\r
         wathchiamge->SetSrc(SAVE_WATHCH);\r
@@ -385,8 +359,8 @@ namespace OHOS
         batteryiamge->SetVisible(!state);\r
 \r
         /*重置计数器*/\r
-        count = 3;         // 初始计数\r
-        progressValue = 0; // 初始进度值\r
+        int count = 3;         // 初始计数\r
+        int progressValue = 0; // 初始进度值\r
         countlabel->SetText(std::to_string(count).c_str());\r
         backprogress->SetValue(progressValue);\r
 \r
index 02ae0c0..dba03e3 100644 (file)
@@ -1,7 +1,13 @@
+/*** \r
+ * @Date: 2024-08-16 09:26:06\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-20 16:59:59\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp\r
+ */\r
 /*** \r
  * @Date: 2024-05-30 15:59:37\r
  * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-09 15:14:49\r
+ * @LastEditTime: 2024-08-20 16:04:44\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp\r
  */\r
 #include "AppViewIDs.h"\r
@@ -82,7 +88,7 @@ namespace OHOS
         }\r
         if (strcmp(view.GetViewId(), SAVEBUTTONOK) == 0)\r
         {\r
-            NativeAbility::GetInstance().EnterSlice(VIEW_SAVEBAT);\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SAVEBAT);\r
         }\r
         return true;\r
     }\r