#747,解决声音与震动,显示方式,系统界面 下拉后无法恢复到原位置,有向下偏移bug 992/2
authorluozheng <1732036298@qq.com>
Fri, 20 Sep 2024 08:44:01 +0000 (16:44 +0800)
committerluozheng <1732036298@qq.com>
Fri, 20 Sep 2024 08:44:01 +0000 (16:44 +0800)
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingItemView.cpp
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingView.cpp
code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h
code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp
code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h
code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp

index 06680a9..698c286 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-27 19:48:49
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-18 10:12:06
+ * @LastEditTime: 2024-09-20 15:44:27
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingItemView.cpp
  */
 
@@ -33,7 +33,7 @@ namespace OHOS
 
     SettingItemView::SettingItemView()
     {
-        SetPosition(0, 120, 380, 120);
+        SetPosition(43, 120, 380, 120);
         SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
         SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);
         SetTouchable(true);
index e6a2827..006795f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-07-12 09:55:29
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-18 10:49:14
+ * @LastEditTime: 2024-09-20 16:04:46
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingView.cpp
  */
 
@@ -87,11 +87,9 @@ namespace OHOS
         scrollView->SetPosition(0, 0, 466, 466);
         scrollView->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
         scrollView->SetStyle(STYLE_BACKGROUND_OPA, UN_OPACITY);
-        scrollView->SetScrollBlankSize(SETTING_SCROLLBLANKSIZE);
         scrollView->SetHorizontalScrollState(false);
         scrollView->SetTouchable(true);
         scrollView->SetThrowDrag(true);
-        scrollView->SetOnDragListener(presenter_);
         /* -------------------------------------------------------------------------- */
         title = new UILabelExt();
         if (title == nullptr)
@@ -125,17 +123,18 @@ namespace OHOS
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingView::OnStart::contentList is nullptr");
             return;
         }
-        contentList->SetPosition(SETTING_LIST_POSITION_X, SETTING_LIST_POSITION_Y, 380, 360);
+        contentList->SetPosition(SETTING_LIST_POSITION_X, SETTING_LIST_POSITION_Y, HORIZONTAL_RESOLUTION, 346);
         contentList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+        contentList->EnableAutoAlign(true);      // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐
+        contentList->SetThrowDrag(true);         // 设置手指抬起屏幕后是否继续滚动。
+        contentList->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。
+        contentList->SetSwipeACCLevel(800);      /*设置手指抬起屏幕后的补偿距离。*/
+        contentList->SetReboundSize(30);
         contentList->SetScrollBlankSize(30);
-        contentList->SetDraggable(true);
-        contentList->SetThrowDrag(true);
-        contentList->EnableAutoAlign(true);
-        contentList->SetReboundSize(REBOUNDSIZE);
-        contentList->SetMaxScrollDistance(MAX_SCR_DIS);
-        contentList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
-        contentList->RequestFocus();
+        FocusManager::GetInstance()->RequestFocus(contentList);
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);
         contentList->SetRotateFactor(1.0);
+        contentList->SetOnDragListener(presenter_);
         /* ----------------------------------- Add ---------------------------------- */
         scrollView->Add(title);
         scrollView->Add(contentList);
index 44ec1d1..b46b068 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-19 21:03:26\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-07-24 17:33:52\r
+ * @LastEditTime: 2024-09-20 15:01:12\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/include/SoundAndVibrationView.h\r
  */\r
 #ifndef SOUND_AND_VIBRATION_VIEW_H\r
@@ -98,6 +98,7 @@ namespace OHOS
         UILabelExt *SilentModeLabel{nullptr};               // 静音模式标签\r
         UIToggleButton *SilentModeToggleButton{nullptr};    // 静音模式切换按钮\r
         bool initViewStatus{false};\r
+        UIImageView *temp{nullptr};\r
     };\r
 } // namespace OHOS\r
 \r
index 54c3c6d..1b8aca0 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-02-19 10:39:14\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-07-24 17:48:13\r
+ * @LastEditTime: 2024-09-20 15:12:30\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/soundandvibration/src/SoundAndVibrationView.cpp\r
  */\r
 #include "soundandvibration/include/SoundAndVibrationView.h"\r
@@ -92,6 +92,9 @@ namespace OHOS
                 delete SilentModeLabel;\r
                 SilentModeLabel = nullptr;\r
 \r
+                delete temp;\r
+                temp = nullptr;\r
+\r
                 delete SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW];\r
                 SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW] = nullptr;\r
             }\r
@@ -117,15 +120,17 @@ namespace OHOS
         }\r
         SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
         SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetScrollBlankSize(75);\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetReboundSize(35);\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetDirection(1);\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetMaxScrollDistance(1000);\r
         SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetThrowDrag(true);\r
         SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetTouchable(true);\r
         SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetDraggable(true);\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->RequestFocus();\r
-        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetRotateFactor(2.0);\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetScrollBlankSize(30);\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetReboundSize(30);\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetDirection(1);\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetSwipeACCLevel(800);      /*设置手指抬起屏幕后的补偿距离。*/\r
+        FocusManager::GetInstance()->RequestFocus(SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]);\r
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);\r
+        SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->SetRotateFactor(1.0);\r
         container_->Add(SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]);\r
 \r
         return true;\r
@@ -306,6 +311,19 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::CreateSoundAndVibrationView fail!!");\r
             return;\r
         }\r
+        /* ------------------- 该组件的使用是为了解决不能单独设置滚动视图底部空白大小问题,用一个不可见组件占位置 ------------------ */\r
+        /* ---------------------------- 因为使用SetScrollBlankSize设置大小后下拉后无法恢复到原位置,有向下偏移 --------------------------- */\r
+        if (temp == nullptr)\r
+        {\r
+            temp = new UIImageView();\r
+            if (temp == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            temp->SetPosition(43, 480 + 120, 380, 40);\r
+            temp->SetVisible(false);\r
+            SoundAndVibrationScrollView[SOUNDANDVIBRATIONVIEW]->Add(temp);\r
+        }\r
         initViewStatus = true;\r
     }\r
 \r
@@ -350,6 +368,7 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SoundAndVibrationView::OnStop");\r
         View<SoundAndVibrationPresenter>::OnStop();\r
         RootView::GetInstance()->ClearOnKeyActListener();\r
+        FocusManager::GetInstance()->ClearFocus();\r
         ClearAll();\r
         return;\r
     }\r
index 19dbe79..8bc05f6 100644 (file)
@@ -29,6 +29,13 @@ namespace OHOS
 \r
     void SystemView::ClearAll()\r
     {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        \r
         if (viewInitStatus)\r
         {\r
             if (SystemScrollView[SYSTEMVIEW] != nullptr)\r
@@ -292,6 +299,8 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemView fail!!");\r
             return;\r
         }\r
+        /* ------------------- 该组件的使用是为了解决不能单独设置滚动视图底部空白大小问题,用一个不可见组件占位置 ------------------ */\r
+        /* ---------------------------- 因为使用SetScrollBlankSize设置过大后,下拉后无法恢复到原位置,有明显的向下偏移 --------------------------- */\r
         if (temp == nullptr)\r
         {\r
             temp = new UIImageView();\r
@@ -300,6 +309,7 @@ namespace OHOS
                 return;\r
             }\r
             temp->SetPosition(43, 960, 380, 40);\r
+            temp->SetVisible(false);\r
             SystemScrollView[SYSTEMVIEW]->Add(temp);\r
         }\r
         viewInitStatus = true;\r
@@ -353,13 +363,8 @@ namespace OHOS
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::OnStop");\r
         View<SystemPresenter>::OnStop();\r
-        if (container_ != nullptr)\r
-        {\r
-            container_->RemoveAll();\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
         RootView::GetInstance()->ClearOnKeyActListener();\r
+        FocusManager::GetInstance()->ClearFocus();\r
         ClearAll();\r
         return;\r
     }\r
index b9a870d..0150238 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-14 09:40:13
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-19 18:24:49
+ * @LastEditTime: 2024-09-20 15:31:42
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h
  */
 
@@ -97,6 +97,7 @@ namespace OHOS
         UIImageView *ThemeStyleImage[MAX_STYLE]{nullptr};
         UILabelButtonExt *ExitLabelButton{nullptr};
         UILabelExt *ExitLabel{nullptr};
+        UIImageView *temp{nullptr};
         bool initViewStatus{false};
     };
 }
index f6b9708..c1925ff 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-14 09:40:20
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-19 18:48:59
+ * @LastEditTime: 2024-09-20 15:36:31
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp
  */
 
@@ -10,7 +10,7 @@
 #include "themestyle/include/ThemeStyleView.h"
 #include "themestyle/include/ThemeStylePresenter.h"
 #include "ui_resource_string.h"
-
+#include "dock/focus_manager.h"
 namespace OHOS
 {
     static ThemeStyleView *g_pThemeStyleView{nullptr};
@@ -35,15 +35,23 @@ namespace OHOS
 
     void ThemeStyleView::ClearAll(void)
     {
+        if (container_ != nullptr)
+        {
+            container_->RemoveAll();
+            delete container_;
+            container_ = nullptr;
+        }
+
         if (initViewStatus)
         {
             if (scrollView != nullptr)
             {
                 scrollView->RemoveAll();
-
-                delete titleText;
-                titleText = nullptr;
-
+                if (titleText)
+                {
+                    delete titleText;
+                    titleText = nullptr;
+                }
                 for (int i = 0; i < MAX_STYLE; i++)
                 {
                     delete ThemeStyleLabelButton[i];
@@ -55,13 +63,21 @@ namespace OHOS
                     delete ThemeStyleImage[i];
                     ThemeStyleImage[i] = nullptr;
                 }
-
-                delete ExitLabelButton;
-                ExitLabelButton = nullptr;
-
-                delete ExitLabel;
-                ExitLabel = nullptr;
-
+                if (ExitLabelButton)
+                {
+                    delete ExitLabelButton;
+                    ExitLabelButton = nullptr;
+                }
+                if (ExitLabel)
+                {
+                    delete ExitLabel;
+                    ExitLabel = nullptr;
+                }
+                if(temp)
+                {
+                    delete temp;
+                    temp = nullptr;
+                }
                 delete scrollView;
                 scrollView = nullptr;
             }
@@ -132,14 +148,16 @@ namespace OHOS
             return false;
         }
         scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        scrollView->SetScrollBlankSize(SCROLLBLANKSIZE);
-        scrollView->SetReboundSize(REBOUNDSIZE);
-        scrollView->SetHorizontalScrollState(false);
-        scrollView->RequestFocus();
+        scrollView->SetScrollBlankSize(30);
+        scrollView->SetReboundSize(30);
+        scrollView->SetDirection(1);
+        scrollView->SetThrowDrag(true);         // 设置手指抬起屏幕后是否继续滚动。
+        scrollView->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。
+        scrollView->SetSwipeACCLevel(800);      /*设置手指抬起屏幕后的补偿距离。*/
+        FocusManager::GetInstance()->RequestFocus(scrollView);
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);
         scrollView->SetRotateFactor(1.0);
-        scrollView->SetMaxScrollDistance(1000);
-        scrollView->SetDragACCLevel(5);
-        scrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
+        scrollView->SetOnDragListener(presenter_);
         scrollView->SetTouchable(true);
         scrollView->SetDraggable(true);
         container_->Add(scrollView);
@@ -286,6 +304,22 @@ namespace OHOS
         }
         UpdateSelectedStyle();
 
+        /* ------------------- 该组件的使用是为了解决不能单独设置滚动视图底部空白大小问题,用一个不可见组件占位置 ------------------ */
+        /* ---------------------------- 因为使用SetScrollBlankSize设置过大后,下拉后无法恢复到原位置,有明显的向下偏移 --------------------------- */
+        if (temp == nullptr)
+        {
+            temp = new UIImageView();
+            if (temp == nullptr)
+            {
+                return;
+            }
+            if (ExitLabelButton)
+            {
+                temp->SetPosition(43, ExitLabelButton->GetY() + ExitLabelButton->GetHeight(), 380, 40);
+            }
+            temp->SetVisible(false);
+            scrollView->Add(temp);
+        }
         initViewStatus = true;
     }
 
@@ -294,8 +328,12 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThemeStyleView::OnStart");
         View<ThemeStylePresenter>::OnStart();
         SetContainerView(new UIViewGroup());
+        if (GetContainer() == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail!!");
+            return;
+        }
         container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        container_->SetOnDragListener(presenter_);
         container_->SetTouchable(true);
         container_->SetDraggable(true);
 
@@ -324,12 +362,7 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThemeStyleView::OnStop");
         View<ThemeStylePresenter>::OnStop();
         RootView::GetInstance()->ClearOnKeyActListener();
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll();
-            delete container_;
-            container_ = nullptr;
-        }
+        FocusManager::GetInstance()->ClearFocus();
         ClearAll();
     }