Merge #992 into sdk602patch0626 from refs/changes/992/head
author罗正 <1732036298@qq.com>
Sat, 21 Sep 2024 04:44:04 +0000 (04:44 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Sat, 21 Sep 2024 04:44:04 +0000 (04:44 +0000)
Code review from 罗正

* refs/changes/992/head: (27 commits squashed)

  - #524,解决:录音删除,删除后不是返回到录音列表界面,返回的是录音界面bug
    #658,解决,手表,录音频繁点击会有蓝色效果

  - #656,解决,手表,闹钟偶现0000闹钟提醒bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 4G界面添加“注:启用4G,可能会加速消耗电量”提醒

  -  运动识别界面添加提醒标签,#192,解决,运动识别界面单一bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 根据禅道上期望:APP查找手表和闹钟,勿扰睡眠静音模式下都有响铃和震动提醒
    #421解决, 睡眠模式,闹钟无响铃震动bug

  - 解决静音模式错误开启后会全局静音bug,根据禅道期望“来电铃声、短信消息提醒,勿扰睡眠静音模式下只有亮屏提醒”

  - #717,解决,设置界面向上滑有黑色空白,需优化bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - #716,解决,设置屏幕与亮度界面右滑返回上一级界面,有上下晃动,优化退出晃动bug

  - #720,解决,手表默认通话音量过小,手表是恢复出厂设置后查看的bug

  - 修复msg_senter关于喝水提醒被覆盖代码

  - 1.添加APP在调节系统音量时候若当前界面在音乐的的声音调节视图则ui同步显示设置的音量值。
    2.解决音乐从本地音乐切换到手机音乐在切换到本地音乐切换不回来bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 解决#748,关于手表界面,编码器旋转不起作用bug

  - 关机,恢复出厂增加震动效果,开机的震动还未加,震动强度会受设置中影响

  - #176,解决,4G能力开关名称修改成4G网络,界面单一bug

  - 1.解决语言界面内存泄漏问题
    2.解决.#741语言选择界面上滑时底部会有黑边,使用编码器时无此情况bug
    3.解决系统界面的内存泄漏问题,并使用一个辅助组件解决系统视图最后一个按钮被则挡住bug

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - #747,解决声音与震动,显示方式,系统界面 下拉后无法恢复到原位置,有向下偏移bug

  - 解决设置视图右滑难退出问题

  - #575,解决,Al 安卓 文心一言 手表端不输出结果,手机输出结果bug,原因为文件路径不存在问题

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/992
17 files changed:
code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h
code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchListitemView.cpp
code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchView.cpp
code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp
code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/RebootAndShutdownPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/rebootandshutdown/src/ShutDownImageAnimatorView.cpp
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/include/SystemView.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemAboutTheWatchView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.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 ded12eb..d5110ac 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-20 15:14:43
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-07 11:14:50
+ * @LastEditTime: 2024-09-21 11:07:14
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/include/AiVoiceModel.h
  */
 #ifndef AI_VOICE_MODEL_H
@@ -102,6 +102,8 @@ namespace OHOS
         int GetSelectAiModel(void);
         int GetAiModelTextId(void);
 
+        bool CreateDirectory(const char* path);
+
     private:
         AiVoiceModel();
         ~AiVoiceModel();
index cd0f1fd..d2ce77f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-20 15:14:50
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-09-07 17:08:17
+ * @LastEditTime: 2024-09-21 11:13:21
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/AiVoiceModel.cpp
  */
 #include "aivoice/include/AiVoiceModel.h"
@@ -24,6 +24,8 @@
 #include <unistd.h>
 #include "ConfigModel.h"
 #include "settings/include/SettingModel.h"
+#include <unistd.h>
+#include <sys/stat.h>
 namespace OHOS
 {
     // 声明定时器变量
@@ -32,7 +34,10 @@ namespace OHOS
     static int Time = THIRTY_TIME;
     static int AiModelConnectTimeout = 5;
 
-    AiVoiceModel::AiVoiceModel() {}
+    AiVoiceModel::AiVoiceModel() 
+    {
+        CreateDirectory("/user/userdata/AiRecording/");
+    }
 
     AiVoiceModel::~AiVoiceModel() {}
 
@@ -42,6 +47,20 @@ namespace OHOS
         return instance;
     }
 
+    bool AiVoiceModel::CreateDirectory(const char* path)
+    {
+        if (access(path, F_OK) == -1) {  // 如果路径不存在
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Directory %s not exist, creating directory\n", path);
+            if (mkdir(path, 0777)!= 0) {  // 尝试创建目录,如果创建失败
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Create directory %s failed\n", path);
+                return false;
+            }
+        } else {  // 如果路径存在
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Directory %s already exists\n", path);
+        }
+        return true;
+    }
+
     // 跳转到返回结果界面
     bool AiVoiceModel::ChangeToReturnResultTextView(void)
     {
index 1a584fd..5f63bca 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:28:03
- * @LastEditors: SnickerSun snickersun@163.com
- * @LastEditTime: 2024-08-30 20:49:17
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-09-19 16:35:47
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/languagecode/src/LanguageSwitchListitemView.cpp
  */
 #include "languagecode/include/LanguageSwitchListitemView.h"
@@ -28,6 +28,7 @@ namespace OHOS
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::~LanguageSwitchListitemView");
         Remove(&m_LabelButtonExt);
+        Remove(&languae_Image);
     }
 
     void LanguageSwitchListitemView::SetItemInfo(const Language itemInfo)
index 58e906b..de74878 100644 (file)
@@ -19,8 +19,8 @@ namespace OHOS
     static constexpr int16_t MAX_SCROLL_DIS = 1000;
     static constexpr int16_t MAX_REBOUND_SIZE = 40;
     static constexpr int16_t MAX_LANGUAGE_LIST_SCROLLBLANKSIZE = 50;
-    static constexpr int16_t ROTATEFACTORVALUE = 4;
-    
+    static constexpr int16_t ROTATEFACTORVALUE = 1.0;
+
     static LanguageSwitchView *g_pLanguageSwitchView{nullptr};
     LanguageSwitchView::LanguageSwitchView()
     {
@@ -59,35 +59,56 @@ namespace OHOS
 
     void LanguageSwitchView::ClearAll(void)
     {
-        if (LanguageSwitchScrollView != nullptr)
+        if (container_ != nullptr)
         {
-            LanguageSwitchScrollView->RemoveAll();
-
-            delete LanguageSwitchViewTitleLabel;
-            LanguageSwitchViewTitleLabel = nullptr;
-
-            delete p_LanguageSwitchListAdapter;
-            p_LanguageSwitchListAdapter = nullptr;
-
-            delete LanguageList;
-            LanguageList = nullptr;
-
-            delete LanguageSwitchScrollView;
-            LanguageSwitchScrollView = nullptr;
-
-            if(group)
+            container_->RemoveAll();
+            if (LanguageSwitchScrollView != nullptr)
+            {
+                LanguageSwitchScrollView->RemoveAll();
+                if (LanguageSwitchViewTitleLabel)
+                {
+                    delete LanguageSwitchViewTitleLabel;
+                    LanguageSwitchViewTitleLabel = nullptr;
+                }
+                if (p_LanguageSwitchListAdapter)
+                {
+                    delete p_LanguageSwitchListAdapter;
+                    p_LanguageSwitchListAdapter = nullptr;
+                }
+                if (LanguageList)
+                {
+                    delete LanguageList;
+                    LanguageList = nullptr;
+                }
+                delete LanguageSwitchScrollView;
+                LanguageSwitchScrollView = nullptr;
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::ClearAll LanguageSwitchScrollView over!!");
+            }
+            if (group != nullptr)
             {
                 group->RemoveAll();
-
-                delete button_cancel;
-                button_cancel = nullptr;
-
-                delete button_ensure;
-                button_ensure = nullptr;
-
-                delete LanguageSwitchViewhintLabel;
-                LanguageSwitchViewhintLabel = nullptr;
+                if (button_cancel)
+                {
+                    delete button_cancel;
+                    button_cancel = nullptr;
+                }
+                if (button_ensure)
+                {
+                    delete button_ensure;
+                    button_ensure = nullptr;
+                }
+                if (LanguageSwitchViewhintLabel)
+                {
+                    delete LanguageSwitchViewhintLabel;
+                    LanguageSwitchViewhintLabel = nullptr;
+                }
+                delete group;
+                group = nullptr;
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::ClearAll group over!!");
             }
+            delete container_;
+            container_ = nullptr;
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::ClearAll over!!");
         }
     }
 
@@ -101,7 +122,7 @@ namespace OHOS
             return false;
         }
         LanguageSwitchScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        LanguageSwitchScrollView->SetScrollBlankSize(MAX_LANGUAGE_LIST_SCROLLBLANKSIZE);
+        // LanguageSwitchScrollView->SetScrollBlankSize(MAX_LANGUAGE_LIST_SCROLLBLANKSIZE);
         LanguageSwitchScrollView->SetHorizontalScrollState(false);
         LanguageSwitchScrollView->SetTouchable(true);
         LanguageSwitchScrollView->SetDraggable(true);
@@ -149,15 +170,18 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageList is nullptr!");
             return false;
         }
-        LanguageList->SetPosition(LANGUAGE_LIST_X, LANGUAGE_LIST_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+        LanguageList->SetPosition(LANGUAGE_LIST_X, LANGUAGE_LIST_Y, HORIZONTAL_RESOLUTION, 346);
         LanguageList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
-        LanguageList->SetScrollBlankSize(MAX_LANGUAGE_LIST_SCROLLBLANKSIZE);
-        LanguageList->EnableAutoAlign(true);                // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐
-        LanguageList->SetThrowDrag(true);                   // 设置手指抬起屏幕后是否继续滚动。
-        LanguageList->SetMaxScrollDistance(MAX_SCROLL_DIS); // 设置手指抬起屏幕后的最大滚动距离。
-        LanguageList->SetReboundSize(MAX_REBOUND_SIZE);
-        LanguageList->SetRotateFactor(ROTATEFACTORVALUE);
+        LanguageList->EnableAutoAlign(true);      // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐
+        LanguageList->SetThrowDrag(true);         // 设置手指抬起屏幕后是否继续滚动。
+        LanguageList->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。
+        LanguageList->SetSwipeACCLevel(800);      /*设置手指抬起屏幕后的补偿距离。*/
+        LanguageList->SetReboundSize(30);
+        LanguageList->SetScrollBlankSize(20);
+        LanguageList->SetStartIndex(0);
         FocusManager::GetInstance()->RequestFocus(LanguageList);
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);
+        LanguageList->SetRotateFactor(1.0);
         return true;
     }
 
@@ -171,13 +195,13 @@ namespace OHOS
         }
     }
 
-    void LanguageSwitchView::show_hint_group(std::string code,bool data)
+    void LanguageSwitchView::show_hint_group(std::string code, bool data)
     {
         group->SetVisible(data);
         RootView::GetInstance()->Invalidate();
-        if(data)
+        if (data)
         {
-            hint_id_code=code;
+            hint_id_code = code;
         }
         return;
     }
@@ -187,18 +211,16 @@ namespace OHOS
         return button_cancel;
     }
 
-
     UIButton *LanguageSwitchView::GetLanguagebutton_ensure(void)
     {
         return button_ensure;
     }
 
-    //Take effect after restart
+    // Take effect after restart
     void LanguageSwitchView::InithintView()
     {
-
         group = new UIViewGroup();
-        if(group==nullptr)
+        if (group == nullptr)
         {
             return;
         }
@@ -207,13 +229,13 @@ namespace OHOS
         group->SetDraggable(true);
         group->SetOnDragListener(presenter_);
 
-
-        if (LanguageSwitchViewhintLabel == nullptr) {
-        LanguageSwitchViewhintLabel = new UILabel();
+        if (LanguageSwitchViewhintLabel == nullptr)
+        {
+            LanguageSwitchViewhintLabel = new UILabel();
         }
-        LanguageSwitchViewhintLabel->SetPosition(47, 194);         // widget's left position and top position
-        LanguageSwitchViewhintLabel->Resize(370, 60);          // widget's width and height
-        LanguageSwitchViewhintLabel->SetViewId("label1");// Set style
+        LanguageSwitchViewhintLabel->SetPosition(47, 194); // widget's left position and top position
+        LanguageSwitchViewhintLabel->Resize(370, 60);      // widget's width and height
+        LanguageSwitchViewhintLabel->SetViewId("label1");  // Set style
         LanguageSwitchViewhintLabel->SetStyle(STYLE_TEXT_FONT, 30);
 
         LanguageSwitchViewhintLabel->SetText("Take effect after restart");
@@ -225,13 +247,11 @@ namespace OHOS
         group->Add(LanguageSwitchViewhintLabel);
         LanguageSwitchViewhintLabel->SetVisible(true);
 
-
-
         button_cancel = new UIButton();
         if (button_cancel == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemShutdown::new button_cancel fail!");
-            return ;
+            return;
         }
         button_cancel->SetPosition(97, 299, 130, 130);
         button_cancel->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
@@ -247,7 +267,7 @@ namespace OHOS
         if (button_ensure == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemShutdown::new button_ensure fail!");
-            return ;
+            return;
         }
         button_ensure->SetPosition(240, 299, 130, 130);
         button_ensure->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
@@ -262,15 +282,18 @@ namespace OHOS
         button_cancel->SetOnClickListener(presenter_);
         button_ensure->SetOnClickListener(presenter_);
         group->SetVisible(false);
-
     }
 
-
     void LanguageSwitchView::OnStart()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnStart");
         View<LanguageSwitchPresenter>::OnStart();
         SetContainerView(new UIViewGroup());
+        if (GetContainer() == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetContainerView fail!!");
+            return;
+        }
         container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
         container_->SetTouchable(true);
         container_->SetDraggable(true);
@@ -303,12 +326,6 @@ namespace OHOS
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnStop");
         View<LanguageSwitchPresenter>::OnStop();
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll();
-            delete container_;
-            container_ = nullptr;
-        }
         RootView::GetInstance()->ClearOnKeyActListener();
         FocusManager::GetInstance()->ClearFocus();
         ClearAll();
index 9b2ac3a..aa54db7 100644 (file)
@@ -195,7 +195,7 @@ namespace OHOS
             }
             note->SetStyle(STYLE_TEXT_FONT, 26);
             note->SetStyle(STYLE_LINE_HEIGHT, 40);
-            note->SetText("注:启用4G,可能会加速消耗电量");
+            note->SetText("开启此功能后,手表可以4G SIM卡拨打电话,耗电会增加。");
             note->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
             note->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
             note->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
index d1263a9..90d00fa 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-20 15:11:17
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-29 17:39:15
+ * @LastEditTime: 2024-09-19 14:21:00
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/RebootAndShutdownPresenter.cpp
  */
 #include "AppViewIDs.h"
@@ -14,6 +14,7 @@
 #include "rebootandshutdown/include/RebootAndShutdownView.h"
 #include "rebootandshutdown/include/RebootAndShutdownModel.h"
 #include "dial_sos_c.h"
+#include "vibrator_service.h"
 namespace OHOS
 {
 
@@ -81,6 +82,7 @@ namespace OHOS
         }
         else if (strcmp(view.GetViewId(), FACTORY_RESET_BUTTON_CHECK_ON) == 0) // 恢复出厂设置确认
         {
+            ui_api_vibrate_once_func(); //恢复出厂增加震动
             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0);
             return true;
         }
index 0baff6a..60db0d2 100644 (file)
@@ -9,6 +9,7 @@
 #include "wearable_log.h"
 #include <custom_utils.h>
 #include "uicomponents/UIComponents.h"
+#include "vibrator_service.h"
 namespace OHOS
 {
 
@@ -71,6 +72,9 @@ namespace OHOS
         shutDownImageAnimatorView->Start();
         isShutDownImageAnimatorStart = true;
         ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);//关机动画已经开始了不能息屏
+
+        //关机增加震动
+        ui_api_vibrate_once_func();
     }
 
     // 获取开机动画是否已经开始
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..9bd7ca5 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 20:42:55
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingView.cpp
  */
 
@@ -87,7 +87,6 @@ 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);
@@ -125,16 +124,16 @@ 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);
         /* ----------------------------------- Add ---------------------------------- */
         scrollView->Add(title);
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 14afb96..16239fa 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-03-30 18:29:39\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-28 19:43:28\r
+ * @LastEditTime: 2024-09-19 20:07:09\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/system/include/SystemView.h\r
  */\r
 #ifndef SYSTEM_VIEW_H\r
@@ -111,9 +111,10 @@ namespace OHOS
         void NeedToUpdateImageinit(void);\r
         UILabelExt *Title{nullptr}; // 标题\r
         UIScrollView *SystemScrollView[MAX_SYSTEMVIEWID]{nullptr};\r
-        UILabelButtonExt *SystemViewLabelButton[5]{nullptr};\r
-        UILabelExt *SystemViewLabel[5]{nullptr};\r
+        UILabelButtonExt *SystemViewLabelButton[7]{nullptr};\r
+        UILabelExt *SystemViewLabel[7]{nullptr};\r
         UIImageView *NeedToUpdateImage{nullptr}; // 提示需要系统更新的icon图片\r
+        UIImageView *temp{nullptr};\r
         bool viewInitStatus{false};\r
     };\r
 } // namespace OHOS\r
index e6fd435..9f8691a 100644 (file)
 \r
 namespace OHOS\r
 {\r
-    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_X = 93;\r
-    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_Y = 52;\r
-    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_W = 280;\r
-    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_H = 40;\r
+    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_X = 83;\r
+    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_Y = 50;\r
+    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_W = 300;\r
+    static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_H = 35;\r
     static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_FONTSIZE = 30;\r
     static constexpr uint16_t SYSTEM_ABOUT_THEWATCH_TITLE_LINEHEIGHT = 35;\r
 \r
     static constexpr uint16_t TITLE_LABEL_X = 53;\r
     static constexpr uint16_t TITLE_LABEL_W = 360;\r
-    static constexpr uint16_t TITLE_LABEL_H = 40;\r
+    static constexpr uint16_t TITLE_LABEL_H = 35;\r
     static constexpr uint16_t TITLE_LABEL_FONTSIZE = 30;\r
     static constexpr uint16_t TITLE_LABEL_LINEHEIGHT = 35;\r
 \r
     static constexpr uint16_t LABEL_X = 33;\r
     static constexpr uint16_t LABEL_W = 400;\r
-    static constexpr uint16_t LABEL_H = 40;\r
+    static constexpr uint16_t LABEL_H = 35;\r
     static constexpr uint16_t LABEL_FONTSIZE = 30;\r
     static constexpr uint16_t LABEL_LINEHEIGHT = 35;\r
 \r
@@ -127,6 +127,7 @@ namespace OHOS
             delete CyweeVersion;\r
             CyweeVersion = nullptr;\r
 \r
+            FocusManager::GetInstance()->ClearFocus();\r
             delete SystemAboutTheWatchScrollView;\r
             SystemAboutTheWatchScrollView = nullptr;\r
         }\r
@@ -178,9 +179,15 @@ namespace OHOS
         SystemAboutTheWatchScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
         SystemAboutTheWatchScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
         SystemAboutTheWatchScrollView->SetStyle(STYLE_BORDER_RADIUS, 1294);\r
-        SystemAboutTheWatchScrollView->SetScrollBlankSize(TITLE_LABEL_LINEHEIGHT);\r
-        SystemAboutTheWatchScrollView->SetReboundSize(50);\r
+        SystemAboutTheWatchScrollView->SetScrollBlankSize(30);\r
+        SystemAboutTheWatchScrollView->SetReboundSize(30);\r
         SystemAboutTheWatchScrollView->SetDirection(1);\r
+        SystemAboutTheWatchScrollView->SetThrowDrag(true);\r
+        SystemAboutTheWatchScrollView->SetMaxScrollDistance(1000);\r
+        SystemAboutTheWatchScrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
+        FocusManager::GetInstance()->RequestFocus(SystemAboutTheWatchScrollView);\r
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);\r
+        SystemAboutTheWatchScrollView->SetRotateFactor(1.0);\r
         UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SystemPresenter::GetInstance());\r
         if (draglistener == nullptr)\r
         {\r
@@ -214,7 +221,7 @@ namespace OHOS
             .lineHeigh = SYSTEM_ABOUT_THEWATCH_TITLE_LINEHEIGHT,\r
             .text = "关于手表",\r
             .textId = STR_ABOUT_WATCH,\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         SystemAboutTheWatchTitle = InitLabel_Ext(Config);\r
         if (SystemAboutTheWatchTitle == nullptr)\r
@@ -233,7 +240,7 @@ namespace OHOS
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "手表名称",\r
             .textId = STR_WATCH_NAME,\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         WatchNameTitle = InitLabel_Ext(Config);\r
         if (WatchNameTitle == nullptr)\r
@@ -275,7 +282,7 @@ namespace OHOS
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "固件版本",\r
             .textId = STR_FIRMWARE_VERSION,\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         FirmwareVersionTitle = InitLabel_Ext(Config);\r
         if (FirmwareVersionTitle == nullptr)\r
@@ -320,7 +327,7 @@ namespace OHOS
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "蓝牙名称",\r
             .textId = STR_BLUETOOTH_NAME,\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         BluetoothNameTitle = InitLabel_Ext(Config);\r
         if (BluetoothNameTitle == nullptr)\r
@@ -363,7 +370,7 @@ namespace OHOS
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "蓝牙地址",\r
             .textId = STR_BLUETOOTH_ADDRESS,\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         BluetoothAddressTitle = InitLabel_Ext(Config);\r
         if (BluetoothAddressTitle == nullptr)\r
@@ -407,7 +414,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "4G Modem",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         Network4GTitle = InitLabel(Config);\r
         if (Network4GTitle == nullptr)\r
@@ -444,7 +451,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "pyVer",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         PyVerTitle = InitLabel(Config);\r
         if (PyVerTitle == nullptr)\r
@@ -481,7 +488,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "IMEI",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         IMELTitle = InitLabel(Config);\r
         if (IMELTitle == nullptr)\r
@@ -518,7 +525,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "OS Version",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         FONTTitle = InitLabel(Config);\r
         if (FONTTitle == nullptr)\r
@@ -555,7 +562,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "HW Version",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         HWVERTitle = InitLabel(Config);\r
         if (HWVERTitle == nullptr)\r
@@ -592,7 +599,7 @@ namespace OHOS
             .fontSize = TITLE_LABEL_FONTSIZE,\r
             .lineHeigh = TITLE_LABEL_LINEHEIGHT,\r
             .text = "Cywee Version",\r
-            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+            .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,\r
         };\r
         CyweeVersionTitle = InitLabel(Config);\r
         if (CyweeVersionTitle == nullptr)\r
index 5e5356b..8daedb0 100644 (file)
@@ -14,6 +14,7 @@
 #include "languagecode/LanguageInit.h"\r
 #include "ui_resource_string.h"\r
 #include "ConfigModel.h"\r
+#include "vibrator_service.h"\r
 namespace OHOS\r
 {\r
 \r
@@ -224,6 +225,7 @@ namespace OHOS
         }\r
         else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0) // 恢复出厂设置确认\r
         {\r
+            ui_api_vibrate_once_func(); //恢复出厂增加震动\r
             do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_RESTORE_FACTORY_SETTING, NULL, 0);\r
             return true;\r
         }\r
index 182c659..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
@@ -39,7 +46,7 @@ namespace OHOS
                     delete Title;\r
                     Title = nullptr;\r
                 }\r
-                for (int i = 0; i < 5; i++)\r
+                for (int i = 0; i < sizeof(SystemViewLabelButton) / sizeof(SystemViewLabelButton[0]); i++)\r
                 {\r
                     if (SystemViewLabelButton[i] != nullptr)\r
                     {\r
@@ -58,6 +65,11 @@ namespace OHOS
                     delete NeedToUpdateImage;\r
                     NeedToUpdateImage = nullptr;\r
                 }\r
+                if (temp != nullptr)\r
+                {\r
+                    delete temp;\r
+                    temp = nullptr;\r
+                }\r
                 delete SystemScrollView[SYSTEMVIEW];\r
                 SystemScrollView[SYSTEMVIEW] = nullptr;\r
             }\r
@@ -131,7 +143,7 @@ namespace OHOS
 \r
     bool SystemView::CreateSystemViewLabel(void)\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemViewLabel");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemViewLabel");\r
         LabelConfig labelConfig = {\r
             .left = 83,\r
             .top = 50,\r
@@ -195,7 +207,7 @@ namespace OHOS
 \r
     bool SystemView::CreateSystemViewLabelButton(void)\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemViewLabelButton");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemViewLabelButton");\r
         struct ButtonSetup\r
         {\r
             int y;\r
@@ -234,7 +246,7 @@ namespace OHOS
 \r
     bool SystemView::CreateSystemScrollView(void)\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemScrollView");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemScrollView");\r
         SystemScrollView[SYSTEMVIEW] = new UIScrollView();\r
         if (SystemScrollView[SYSTEMVIEW] == nullptr)\r
         {\r
@@ -243,12 +255,14 @@ namespace OHOS
         }\r
         SystemScrollView[SYSTEMVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
         SystemScrollView[SYSTEMVIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        SystemScrollView[SYSTEMVIEW]->SetScrollBlankSize(75);\r
-        SystemScrollView[SYSTEMVIEW]->SetReboundSize(35);\r
+        SystemScrollView[SYSTEMVIEW]->SetScrollBlankSize(30);\r
+        SystemScrollView[SYSTEMVIEW]->SetReboundSize(30);\r
         SystemScrollView[SYSTEMVIEW]->SetDirection(1);\r
         SystemScrollView[SYSTEMVIEW]->SetThrowDrag(true);         // 设置手指抬起屏幕后是否继续滚动。\r
         SystemScrollView[SYSTEMVIEW]->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。\r
-        SystemScrollView[SYSTEMVIEW]->RequestFocus();\r
+        SystemScrollView[SYSTEMVIEW]->SetSwipeACCLevel(800);      /*设置手指抬起屏幕后的补偿距离。*/\r
+        FocusManager::GetInstance()->RequestFocus(SystemScrollView[SYSTEMVIEW]);\r
+        FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP);\r
         SystemScrollView[SYSTEMVIEW]->SetRotateFactor(1.0);\r
         SystemScrollView[SYSTEMVIEW]->SetOnDragListener(presenter_);\r
         SystemScrollView[SYSTEMVIEW]->SetTouchable(true);\r
@@ -279,12 +293,25 @@ namespace OHOS
 \r
     void SystemView::CreateSystemView(void)\r
     {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemView");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemView");\r
         if (!CreateSystemScrollView() || !CreateSystemViewLabelButton() || !CreateSystemViewLabel())\r
         {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemView::CreateSystemView");\r
+            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
+            if (temp == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            temp->SetPosition(43, 960, 380, 40);\r
+            temp->SetVisible(false);\r
+            SystemScrollView[SYSTEMVIEW]->Add(temp);\r
+        }\r
         viewInitStatus = true;\r
     }\r
 \r
@@ -336,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();
     }