语言选择界面优化
authorluozheng <1732036298@qq.com>
Thu, 13 Jun 2024 10:33:30 +0000 (18:33 +0800)
committerluozheng <1732036298@qq.com>
Thu, 13 Jun 2024 10:33:30 +0000 (18:33 +0800)
code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp
code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h
code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h
code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h
code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp

index 6337536..ce80767 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-30 09:14:38
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-30 10:25:43
+ * @LastEditTime: 2024-06-13 17:18:54
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp
  */
 #include <fstream>
@@ -16,6 +16,7 @@
 #include "ConfigModel.h"
 #include <NativeAbility.h>
 #include "AppViewIDs.h"
+#include "language/include/LanguageSwitchModel.h"
 namespace OHOS
 {
     // 初始化 languages 数组
@@ -125,10 +126,12 @@ namespace OHOS
             */
             //thelanguage = 0;
             NativeAbility::GetInstance().SetDefaultSliceId(VIEW_LANGUAGE_SWITCH);
+            LanguageSwitchModel::GetInstance().SetisFirstTimeStart(true);
         }
         else
         {
             NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
+            LanguageSwitchModel::GetInstance().SetisFirstTimeStart(false);
         }
         FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, thelanguage);
         return true;
index babd0ae..3e7ed87 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:28:25
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 11:12:28
+ * @LastEditTime: 2024-06-13 15:52:44
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchListitemView.h
  */
 #ifndef LANGUAGE_SWITCH_LIST_ITEM_VIEW
@@ -22,6 +22,7 @@ namespace OHOS
         virtual void SetItemInfo(const Language itemInfo);
         virtual void SetUpChild();
         UILabelButtonExt *GetUILabelButtonExt(void);
+
     private:
         LanguageSwitchListitemView(const LanguageSwitchListitemView &);
         UILabelButtonExt m_LabelButtonExt;
index b3c0bab..697a60a 100644 (file)
@@ -2,13 +2,15 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 16:36:58
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-30 11:34:16
+ * @LastEditTime: 2024-06-13 18:05:27
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchModel.h
  */
 
 #ifndef LANGUAGE_SWITCH_MODEL_H
 #define LANGUAGE_SWITCH_MODEL_H
 
+#include <iostream>
+#include "string"
 #include "language/include/LanguageSwitchListAdapter.h"
 namespace OHOS
 {
@@ -21,15 +23,17 @@ namespace OHOS
         const char *GetCurLanguageCode(void);
         void SetLastLanguageCode(std::string prelanguageid);
         const char *GetLastLanguageCode(void);
-
+        
+        void SetisFirstTimeStart(bool value);
+        bool GetisFirstTimeStart(void);
     private:
         LanguageSwitchModel();
         ~LanguageSwitchModel();
         LanguageSwitchModel(const LanguageSwitchModel &) = delete;
         const LanguageSwitchModel &operator=(const LanguageSwitchModel &) = delete;
         static const uint16_t LANGUAGE_ITEM_MAX = MAX_LANGUAGE; // 语言总数
-        char *CurLanguageCode = "zh";                           // 当前语言,默认简体中文
-        std::string PreLanguageCode;                        // 上一次切换的语言
+        std::string PreLanguageCode;                            // 上一次切换的语言
+        bool isFirstTimeStart; // 手表是否是第一次启动
     };
 
 }
index 1c80b78..2ff50ec 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:16:52
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-05-07 10:01:25
+ * @LastEditTime: 2024-06-13 16:04:05
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchPresenter.h
  */
 #ifndef LANGUAGE_SWITCH_PRESENTER_H
@@ -40,10 +40,10 @@ namespace OHOS
         bool OnDragEnd(UIView &view, const DragEvent &event) override;
         bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
         LanguageSwitchModel *p_LanguageSwitchModel{nullptr};
-        //UILabelButtonExt *LabelButton[MAX_LANGUAGE]{nullptr};
         ImageInfo *NotSelectedImg;
         ImageInfo *SelectedImg;
         UILabelExt *m_labelext{nullptr};
+        bool X_DRAG_FLAG{false};
     };
 }
 
index 5ca6432..99eec0a 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 11:58:38
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 16:33:22
+ * @LastEditTime: 2024-06-13 16:11:04
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/include/LanguageSwitchView.h
  */
 #ifndef LANGUAGE_SWITCH_VIEW_H
@@ -32,17 +32,17 @@ namespace OHOS
         void OnStop() override;
         void AddLanguageItemToList(const Language &item);
         UIList *GetLanguageList(void);
+
     private:
+        bool LanguageSwitchScrollViewInit(void);
+        bool LanguageSwitchLabelViewInit(void);
+        bool LanguageSwitchListViewInit(void);
         void LanguageSwitchViewInit(void);
         void ClearAll(void);
-        bool LanguageSwitchViewScrollViewInit(void);
-        bool LanguageSwitchViewTitleLabelInit(void);
-        bool LanguageListInit(void);
         UIScrollView *LanguageSwitchScrollView{nullptr};
         UILabelExt *LanguageSwitchViewTitleLabel{nullptr};               // "语言"
         UIList *LanguageList{nullptr};                                   // 语言列表
         LanguageSwitchListAdapter *p_LanguageSwitchListAdapter{nullptr}; // 语言列表适配器
-        bool viewInitStatus{false};
     };
 }
 #endif
\ No newline at end of file
index 97d8731..1ebdadb 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:27:05
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-30 11:40:50
+ * @LastEditTime: 2024-06-13 15:50:29
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListAdapter.cpp
  */
 #include "language/include/LanguageSwitchListAdapter.h"
 #include "language/include/LanguageSwitchModel.h"
 #include "language/include/LanguageSwitchPresenter.h"
 #include "language/LanguageInit.h"
+#include <UiConfig.h>
 
 namespace OHOS
 {
 
     LanguageSwitchListAdapter::LanguageSwitchListAdapter()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::LanguageSwitchListAdapter");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::LanguageSwitchListAdapter");
         NotSelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_OFF_IMAGE);
         SelectedImg = ImageCacheManager::GetInstance().LoadSingleRes(PNG_CHECKBOX_ON_IMAGE);
     }
 
     LanguageSwitchListAdapter::~LanguageSwitchListAdapter()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::~LanguageSwitchListAdapter");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListAdapter::~LanguageSwitchListAdapter");
         listData.clear();
     }
 
index 114c4d5..b9d82f9 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:28:03
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-30 17:37:32
+ * @LastEditTime: 2024-06-13 15:54:59
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchListitemView.cpp
  */
 #include "language/include/LanguageSwitchListitemView.h"
@@ -13,18 +13,17 @@ namespace OHOS
 
     LanguageSwitchListitemView::LanguageSwitchListitemView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::LanguageSwitchListitemView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::LanguageSwitchListitemView");
         SetPosition(43, 120, 380, 120);
         SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
         SetStyle(STYLE_BACKGROUND_OPA, 255);
-        // SetTouchable(true);
         SetUpChild();
         Add(&m_LabelButtonExt);
     }
 
     LanguageSwitchListitemView::~LanguageSwitchListitemView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::~LanguageSwitchListitemView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::~LanguageSwitchListitemView");
         Remove(&m_LabelButtonExt);
     }
 
@@ -37,6 +36,7 @@ namespace OHOS
 
     void LanguageSwitchListitemView::SetUpChild()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchListitemView::SetUpChild");
         m_LabelButtonExt.SetPosition(0, 0, 380, 100);
         m_LabelButtonExt.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
         m_LabelButtonExt.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
index 9729f76..28c8683 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 16:36:46
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-30 11:58:38
+ * @LastEditTime: 2024-06-13 17:17:45
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp
  */
 #include "language/include/LanguageSwitchModel.h"
 namespace OHOS
 {
 
-    LanguageSwitchModel::LanguageSwitchModel()
-    {
-        // CurLanguageCode = const_cast<char *>(ConfigModel::GetInstance()->GetLanguageCode().c_str());
-    }
+    LanguageSwitchModel::LanguageSwitchModel() {}
 
-    LanguageSwitchModel::~LanguageSwitchModel()
-    {
-    }
+    LanguageSwitchModel::~LanguageSwitchModel() {}
 
     LanguageSwitchModel &LanguageSwitchModel::GetInstance()
     {
@@ -32,7 +27,6 @@ namespace OHOS
      */
     void LanguageSwitchModel::SetCurLanguageCode(char *curlanguagecode)
     {
-        // CurLanguageCode = curlanguagecode;
         ConfigModel::GetInstance()->SetLanguageCode(curlanguagecode);
     }
 
@@ -41,7 +35,6 @@ namespace OHOS
      */
     const char *LanguageSwitchModel::GetCurLanguageCode(void)
     {
-        // return CurLanguageCode;
         return ConfigModel::GetInstance()->GetLanguageCode().c_str();
     }
 
@@ -60,4 +53,14 @@ namespace OHOS
     {
         return PreLanguageCode.c_str();
     }
+
+    void LanguageSwitchModel::SetisFirstTimeStart(bool value)
+    {
+        isFirstTimeStart = value;
+    }
+
+    bool LanguageSwitchModel::GetisFirstTimeStart(void)
+    {
+        return isFirstTimeStart;
+    }
 }
\ No newline at end of file
index e5b02a8..914872c 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:17:43
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-07 10:36:33
+ * @LastEditTime: 2024-06-13 18:02:08
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp
  */
 #include "AppViewIDs.h"
@@ -53,9 +53,12 @@ namespace OHOS
         {
             return;
         }
-        for (uint8_t i = 0; i < MAX_LANGUAGE; i++)
+        else
         {
-            view_->AddLanguageItemToList(languages[i]);
+            for (uint8_t i = 0; i < MAX_LANGUAGE; i++)
+            {
+                view_->AddLanguageItemToList(languages[i]);
+            }
         }
     }
 
@@ -71,23 +74,30 @@ namespace OHOS
 
     bool LanguageSwitchPresenter::OnDrag(UIView &view, const DragEvent &event)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnDrag");
         UNUSED(view);
-        UNUSED(event);
+        if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动
+        {
+            LanguageSwitchPresenter::X_DRAG_FLAG = true;
+        }
         return true;
     }
 
     bool LanguageSwitchPresenter::OnDragEnd(UIView &view, const DragEvent &event)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnDragEnd");
         UNUSED(view);
-        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && LanguageSwitchPresenter::X_DRAG_FLAG)
         {
-            NativeAbility::GetInstance().Back();
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+            LanguageSwitchPresenter::X_DRAG_FLAG = false;
         }
         return true;
     }
 
     bool LanguageSwitchPresenter::OnClick(UIView &view, const ClickEvent &event)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RespiratoryTrainingPresenter::OnClick");
         UNUSED(event);
         const char *lastLanguageCode = p_LanguageSwitchModel->GetLastLanguageCode();
         UILabelButtonExt *p_UILabelButtonExt = dynamic_cast<UILabelButtonExt *>(&view);
@@ -123,7 +133,15 @@ namespace OHOS
             // 更新上一个语言ID
             p_LanguageSwitchModel->SetLastLanguageCode(p_LanguageSwitchModel->GetCurLanguageCode());
         }
-        NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);//暂定选完语言后设置默认的Sliceid为主界面
+        if (p_LanguageSwitchModel->GetisFirstTimeStart() == true)
+        {
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+            NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN); // 暂定选完语言后设置默认的Sliceid为主界面
+        }
+        else
+        {
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);
+        }
         return true;
     }
 
index cc44e53..2f58319 100644 (file)
@@ -18,6 +18,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 LanguageSwitchView *g_pLanguageSwitchView{nullptr};
     LanguageSwitchView::LanguageSwitchView()
     {
@@ -28,19 +30,35 @@ namespace OHOS
     LanguageSwitchView::~LanguageSwitchView()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::~LanguageSwitchView");
-        ClearAll();
         g_pLanguageSwitchView = nullptr;
     }
 
     LanguageSwitchView *LanguageSwitchView::GetInstance()
     {
-
         return g_pLanguageSwitchView;
     }
 
+    // 设置按键监听
+    static void SetKeyActListener()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::LanguageSwitchPresenter::GetInstance();
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+    }
+
+    void LanguageSwitchView::AddLanguageItemToList(const Language &item)
+    {
+        p_LanguageSwitchListAdapter->AddListItem(item);
+    }
+
+    UIList *LanguageSwitchView::GetLanguageList(void)
+    {
+        return LanguageList;
+    }
+
     void LanguageSwitchView::ClearAll(void)
     {
-        if (viewInitStatus == true)
+        if (LanguageSwitchScrollView != nullptr)
         {
             LanguageSwitchScrollView->RemoveAll();
 
@@ -58,8 +76,9 @@ namespace OHOS
         }
     }
 
-    bool LanguageSwitchView::LanguageSwitchViewScrollViewInit(void)
+    bool LanguageSwitchView::LanguageSwitchScrollViewInit(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchScrollViewInit");
         LanguageSwitchScrollView = new UIScrollView();
         if (LanguageSwitchScrollView == nullptr)
         {
@@ -67,13 +86,6 @@ namespace OHOS
             return false;
         }
         LanguageSwitchScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(LanguageSwitchPresenter::GetInstance());
-        if (draglistener == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::draglistener can not be nullptr!");
-            return false;
-        }
-        LanguageSwitchScrollView->SetOnDragListener(draglistener);
         LanguageSwitchScrollView->SetScrollBlankSize(MAX_LANGUAGE_LIST_SCROLLBLANKSIZE);
         LanguageSwitchScrollView->SetHorizontalScrollState(false);
         LanguageSwitchScrollView->SetTouchable(true);
@@ -82,8 +94,9 @@ namespace OHOS
         return true;
     }
 
-    bool LanguageSwitchView::LanguageSwitchViewTitleLabelInit(void)
+    bool LanguageSwitchView::LanguageSwitchLabelViewInit(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchLabelViewInit");
         LanguageSwitchViewTitleLabel = new UILabelExt();
         if (LanguageSwitchViewTitleLabel == nullptr)
         {
@@ -95,25 +108,26 @@ namespace OHOS
         LanguageSwitchViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, TITLE_LABEL_LINE_HEIGHT);
         // LanguageSwitchViewTitleLabel->SetText("语言");
         LanguageSwitchViewTitleLabel->SetTextId(STR_LANGUAGE_SELECTION);
-        LanguageSwitchViewTitleLabel->ForceResetText();
         LanguageSwitchViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
         LanguageSwitchViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         LanguageSwitchViewTitleLabel->SetRollSpeed(TITLE_LABEL_TEXT_ROLLSPEED);
         LanguageSwitchViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLE_LABEL_TEXT_FONT);
         LanguageSwitchPresenter::GetInstance()->SetLabelExt(LanguageSwitchViewTitleLabel);
+        LanguageSwitchScrollView->Add(LanguageSwitchViewTitleLabel);
+
         return true;
     }
 
-    bool LanguageSwitchView::LanguageListInit(void)
+    bool LanguageSwitchView::LanguageSwitchListViewInit(void)
     {
-        // UIList 的适配器
-        p_LanguageSwitchListAdapter = new LanguageSwitchListAdapter();
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchListViewInit");
+        p_LanguageSwitchListAdapter = new LanguageSwitchListAdapter(); // UIList 的适配器
         if (p_LanguageSwitchListAdapter == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::p_LanguageSwitchListAdapter is nullptr!");
             return false;
         }
-        p_LanguageSwitchListAdapter->SetItemClickListener(LanguageSwitchPresenter::GetInstance());
+        p_LanguageSwitchListAdapter->SetItemClickListener(static_cast<UIView::OnClickListener *>(LanguageSwitchPresenter::GetInstance()));
         LanguageList = new UIList(UIList::VERTICAL);
         if (LanguageList == nullptr)
         {
@@ -127,70 +141,65 @@ namespace OHOS
         LanguageList->SetThrowDrag(true);                   // 设置手指抬起屏幕后是否继续滚动。
         LanguageList->SetMaxScrollDistance(MAX_SCROLL_DIS); // 设置手指抬起屏幕后的最大滚动距离。
         LanguageList->SetReboundSize(MAX_REBOUND_SIZE);
+        LanguageList->SetRotateFactor(ROTATEFACTORVALUE);
+        FocusManager::GetInstance()->RequestFocus(LanguageList);
         return true;
     }
 
     void LanguageSwitchView::LanguageSwitchViewInit(void)
     {
-        if (!LanguageSwitchViewScrollViewInit())
-        {
-            return;
-        }
-        if (!LanguageSwitchViewTitleLabelInit())
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchViewInit");
+        if (!LanguageSwitchScrollViewInit() || !LanguageSwitchLabelViewInit() || !LanguageSwitchListViewInit())
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchViewInit fail!!");
             return;
         }
-        if (!LanguageListInit())
-        {
-            return;
-        }
-        viewInitStatus = true;
     }
 
     void LanguageSwitchView::OnStart()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnStart");
         View<LanguageSwitchPresenter>::OnStart();
-        LanguageSwitchViewInit();
+        SetContainerView(new UIViewGroup());
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+        container_->SetTouchable(true);
+        container_->SetDraggable(true);
+        container_->SetOnDragListener(presenter_);
 
-        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::LanguageSwitchPresenter::GetInstance();
-        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+        LanguageSwitchViewInit();
+        SetKeyActListener();
     }
 
     void LanguageSwitchView::OnSetUpView()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnSetUpView");
         View<LanguageSwitchPresenter>::OnSetUpView();
-        LanguageSwitchScrollView->Add(LanguageSwitchViewTitleLabel);
-        LanguageSwitchScrollView->Add(LanguageList);
-        RootView::GetInstance()->Add(LanguageSwitchScrollView);
+        container_->Add(LanguageSwitchScrollView);
         LanguageList->SetAdapter(p_LanguageSwitchListAdapter);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d", p_LanguageSwitchListAdapter->GetCount());
-        LanguageSwitchViewTitleLabel->ForceResetText();
+        LanguageSwitchScrollView->Add(LanguageList);
         Draw();
     }
 
     void LanguageSwitchView::OnTearDownView()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnTearDownView");
         View<LanguageSwitchPresenter>::OnTearDownView();
         return;
     }
 
     void LanguageSwitchView::OnStop()
     {
-
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnStop");
         View<LanguageSwitchPresenter>::OnStop();
-        RootView::GetInstance()->RemoveAll();
+        if (container_ != nullptr)
+        {
+            container_->RemoveAll();
+            delete container_;
+            container_ = nullptr;
+        }
         RootView::GetInstance()->ClearOnKeyActListener();
+        FocusManager::GetInstance()->ClearFocus();
+        ClearAll();
         return;
     }
-
-    void LanguageSwitchView::AddLanguageItemToList(const Language &item)
-    {
-        p_LanguageSwitchListAdapter->AddListItem(item);
-    }
-
-    UIList *LanguageSwitchView::GetLanguageList(void)
-    {
-        return LanguageList;
-    }
-
 }
\ No newline at end of file
index e5e1e0b..4110fab 100644 (file)
@@ -92,7 +92,8 @@ namespace OHOS
                 Title = nullptr;\r
             }\r
 \r
-            for (int i = 0; i < (sizeof(ViewMapper_t) / sizeof(SystemViewMapper_ext)); i++)\r
+            int num = (sizeof(ViewMapper_t) / sizeof(SystemViewMapper_ext));\r
+            for (int i = 0; i < num; i++)\r
             {\r
                 delete SystemViewButton[i];\r
                 SystemViewButton[i] = nullptr;\r
@@ -146,9 +147,11 @@ 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(35);\r
-        SystemScrollView[SYSTEMVIEW]->SetReboundSize(50);\r
+        SystemScrollView[SYSTEMVIEW]->SetScrollBlankSize(75);\r
+        SystemScrollView[SYSTEMVIEW]->SetReboundSize(35);\r
         SystemScrollView[SYSTEMVIEW]->SetDirection(1);\r
+        SystemScrollView[SYSTEMVIEW]->SetThrowDrag(true);         // 设置手指抬起屏幕后是否继续滚动。\r
+        SystemScrollView[SYSTEMVIEW]->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。\r
         UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SystemPresenter::GetInstance());\r
         if (draglistener == nullptr)\r
         {\r
@@ -359,7 +362,7 @@ namespace OHOS
             }\r
             NeedToUpdateImage->SetPosition(323, 280, 20, 20);\r
             NeedToUpdateImage->SetStyle(STYLE_BORDER_RADIUS, 200);\r
-            char *imagesPath = "/user/res/system/SYSTEM_UPDATE_FLAG.bin";\r
+            const char *imagesPath = "/user/res/system/SYSTEM_UPDATE_FLAG.bin";\r
             NeedToUpdateImage->SetSrc(imagesPath);\r
 \r
             SystemScrollView[SYSTEMVIEW]->Add(NeedToUpdateImage);\r