#443运动-类别界面-上滑会有短暂回弹
authorCaisking <3449750381@qq.com>
Sat, 7 Sep 2024 09:38:55 +0000 (17:38 +0800)
committerCaisking <3449750381@qq.com>
Sat, 7 Sep 2024 09:38:55 +0000 (17:38 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitView.cpp

index a2fb057..15cdc48 100644 (file)
@@ -63,56 +63,53 @@ namespace OHOS
     {
         if (scrollView == nullptr)
         {
-            scrollView = new UIScrollView();
+                 scrollView = new UIScrollView();
+            if (scrollView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail!");
+                return;
+            }
+            scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+            scrollView->SetScrollBlankSize(50);
+            // scrollView->SetReboundSize(35);
+            scrollView->SetHorizontalScrollState(false);
+            scrollView->RequestFocus();
+            scrollView->SetRotateFactor(1.0);
+            scrollView->SetMaxScrollDistance(1000);
+            scrollView->SetDragACCLevel(5);
+            scrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
+            scrollView->SetTouchable(true);
+            scrollView->SetDraggable(true);
+            container_->Add(scrollView);
         }
-        scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        // scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-        // scrollView->SetScrollBlankSize(52);
-        scrollView->SetReboundSize(50);
-        scrollView->SetTouchable(true);
-        scrollView->SetDraggable(true);
-        scrollView->SetDirection(1);
-        draglistener = static_cast<UIView::OnDragListener *>(TraingIcePresenter::GetInstance());
-        scrollView->SetOnDragListener(draglistener);
-
         /* -------------------------------------------------------------------------- */
-        // 初始化Lable
-        InitLabelExt(title, 135, 52, 200, 60, "label1", STR_ICE_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        title->SetStyle(STYLE_TEXT_COLOR, Color::Green().full);
-        scrollView->Add(title);
+        // 初始化Lable 暂时不添加
+        if (title == nullptr)
+        {
+            InitLabelExt(title, 135, 52, 200, 60, "label1", STR_ICE_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);
+            title->SetStyle(STYLE_TEXT_COLOR, Color::Green().full);
+            scrollView->Add(title);
+        }
         // UIList 的适配器
-        p_TraingIceListAdapter = new TraingIceAdapter();
-        p_TraingIceListAdapter->SetItemClickListener(presenter_);
+        if (p_TraingIceListAdapter == nullptr)
+        {
+            p_TraingIceListAdapter = new TraingIceAdapter();
+            p_TraingIceListAdapter->SetItemClickListener(presenter_);
+        }
+        // 初始化列表
         if (TraingIceList == nullptr)
         {
             TraingIceList = new UIList();
+            TraingIceList->SetPosition(43, 120, 466, 466);
+            TraingIceList->SetThrowDrag(true);
+            TraingIceList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+            TraingIceList->SetMaxScrollDistance(1000);
+            TraingIceList->SetSwipeACCLevel(800);
+            TraingIceList->SetDragACCLevel(5);
+            // 增加表冠控制
+            TraingIceList->SetRotateFactor(2);
+            TraingIceList->RequestFocus();
         }
-#if 0
-        TraingIceList->SetPosition(Ice_LIST_POSITION_X, Ice_LIST_POSITION_Y);
-        TraingIceList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        TraingIceList->SetScrollBlankSize(Ice_SCROLLBLANKSIZE);
-        TraingIceList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position
-        TraingIceList->SetDraggable(true);
-        TraingIceList->SetThrowDrag(true);
-        TraingIceList->EnableAutoAlign(true);
-        TraingIceList->SetReboundSize(50);
-        TraingIceList->SetElastic(true); // 设置回弹效果
-        TraingIceList->SetMaxScrollDistance(MAX_SCR_DIS);
-        TraingIceList->SetYScrollBarVisible(true); // 设置滑动滚动条
-#endif
-
-        TraingIceList->SetPosition(Ice_LIST_POSITION_X, Ice_LIST_POSITION_Y, 466, 466);
-        TraingIceList->SetThrowDrag(true);
-        TraingIceList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        TraingIceList->SetMaxScrollDistance(1000);
-        TraingIceList->SetSwipeACCLevel(800);
-        TraingIceList->SetDragACCLevel(5);
-
-        // 增加表冠控制
-        scrollView->SetRotateFactor(2);
-        scrollView->RequestFocus();
-
-        SetKeyActListener();
     }
     UIList *TraingIceView::GetList()
     {
@@ -149,19 +146,26 @@ namespace OHOS
     {
         View<TraingIcePresenter>::OnStart();
         BaseView::RootView(Color::Black().full);
+        SetContainerView(new UIViewGroup());
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+        container_->SetOnDragListener(presenter_);
+        container_->SetTouchable(true);
+        container_->SetDraggable(true);
         PreLoad();
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);
     }
 
     /// @brief 创建页面的视图。
     void TraingIceView::OnSetUpView()
     {
         View<TraingIcePresenter>::OnSetUpView();
-        // scrollView->Add(title);
-        scrollView->Add(TraingIceList);
-        scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        RootView::GetInstance()->Add(scrollView);
-        TraingIceList->SetAdapter(p_TraingIceListAdapter);
-        // TraingIceList->RefreshList(); // 刷新列表
+        if (TraingIceList != nullptr && p_TraingIceListAdapter != nullptr)
+        {
+            scrollView->Add(TraingIceList);
+            scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+            RootView::GetInstance()->Add(scrollView);
+            TraingIceList->SetAdapter(p_TraingIceListAdapter);
+        }
         Draw();
     }
 
@@ -176,11 +180,14 @@ namespace OHOS
     void TraingIceView::OnStop()
     {
         View<TraingIcePresenter>::OnStop();
-
+        if (container_ != nullptr)
+        {
+            container_->RemoveAll();
+            delete container_;
+            container_ = nullptr;
+        }
         RootView::GetInstance()->ClearOnKeyActListener();
-        // FocusManager::GetInstance()->ClearFocus();
         RootView::GetInstance()->RemoveAll();
-        // RootView::GetInstance()->ClearFocus();
         return;
     }
 }
\ No newline at end of file
index 415ee64..93855a8 100644 (file)
@@ -56,56 +56,53 @@ namespace OHOS
     {\r
         if (scrollView == nullptr)\r
         {\r
-            scrollView = new UIScrollView();\r
+                 scrollView = new UIScrollView();\r
+            if (scrollView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail!");\r
+                return;\r
+            }\r
+            scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+            scrollView->SetScrollBlankSize(50);\r
+            // scrollView->SetReboundSize(35);\r
+            scrollView->SetHorizontalScrollState(false);\r
+            scrollView->RequestFocus();\r
+            scrollView->SetRotateFactor(1.0);\r
+            scrollView->SetMaxScrollDistance(1000);\r
+            scrollView->SetDragACCLevel(5);\r
+            scrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
+            scrollView->SetTouchable(true);\r
+            scrollView->SetDraggable(true);\r
+            container_->Add(scrollView);\r
         }\r
-        scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
-        // scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        // scrollView->SetScrollBlankSize(52);\r
-        scrollView->SetReboundSize(50);\r
-        scrollView->SetTouchable(true);\r
-        scrollView->SetDraggable(true);\r
-        scrollView->SetDirection(1);\r
-        draglistener = static_cast<UIView::OnDragListener *>(TraingLimitPresenter::GetInstance());\r
-        scrollView->SetOnDragListener(draglistener);\r
-\r
         /* -------------------------------------------------------------------------- */\r
-        // 初始化Lable\r
-        InitLabelExt(title, 135, 52, 200, 60, "label1", STR_EXTREME_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-        title->SetStyle(STYLE_TEXT_COLOR, Color::Green().full);\r
-        scrollView->Add(title);\r
+        // 初始化Lable 暂时不添加\r
+        if (title == nullptr)\r
+        {\r
+            InitLabelExt(title, 135, 52, 200, 60, "label1", STR_EXTREME_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            title->SetStyle(STYLE_TEXT_COLOR, Color::Green().full);\r
+            scrollView->Add(title);\r
+        }\r
         // UIList 的适配器\r
-        p_TraingLimitListAdapter = new TraingLimitAdapter();\r
-        p_TraingLimitListAdapter->SetItemClickListener(presenter_);\r
+        if (p_TraingLimitListAdapter == nullptr)\r
+        {\r
+            p_TraingLimitListAdapter = new TraingLimitAdapter();\r
+            p_TraingLimitListAdapter->SetItemClickListener(presenter_);\r
+        }\r
+        // 初始化列表\r
         if (TraingLimitList == nullptr)\r
         {\r
             TraingLimitList = new UIList();\r
+            TraingLimitList->SetPosition(43, 120, 466, 466);\r
+            TraingLimitList->SetThrowDrag(true);\r
+            TraingLimitList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
+            TraingLimitList->SetMaxScrollDistance(1000);\r
+            TraingLimitList->SetSwipeACCLevel(800);\r
+            TraingLimitList->SetDragACCLevel(5);\r
+            // 增加表冠控制\r
+            TraingLimitList->SetRotateFactor(2);\r
+            TraingLimitList->RequestFocus();\r
         }\r
-#if 0\r
-        TraingLimitList->SetPosition(Limit_LIST_POSITION_X, Limit_LIST_POSITION_Y);\r
-        TraingLimitList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
-        TraingLimitList->SetScrollBlankSize(Limit_SCROLLBLANKSIZE);\r
-        TraingLimitList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position\r
-        TraingLimitList->SetReboundSize(50);\r
-        TraingLimitList->SetDraggable(true);\r
-        TraingLimitList->SetThrowDrag(true);\r
-        TraingLimitList->EnableAutoAlign(true);\r
-        TraingLimitList->SetElastic(true); // 设置回弹效果\r
-        TraingLimitList->SetMaxScrollDistance(MAX_SCR_DIS);\r
-        TraingLimitList->SetYScrollBarVisible(true); // 设置滑动滚动条\r
-#endif\r
-\r
-        TraingLimitList->SetPosition(Limit_LIST_POSITION_X, Limit_LIST_POSITION_Y, 466, 466);\r
-        TraingLimitList->SetThrowDrag(true);\r
-        TraingLimitList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
-        TraingLimitList->SetMaxScrollDistance(1000);\r
-        TraingLimitList->SetSwipeACCLevel(800);\r
-        TraingLimitList->SetDragACCLevel(5);\r
-\r
-        // 增加表冠控制\r
-        TraingLimitList->SetRotateFactor(2);\r
-        TraingLimitList->RequestFocus();\r
-\r
-        SetKeyActListener();\r
     }\r
     UIList *TraingLimitView::GetList()\r
     {\r
@@ -142,19 +139,26 @@ namespace OHOS
     {\r
         View<TraingLimitPresenter>::OnStart();\r
         BaseView::RootView(Color::Black().full);\r
+        SetContainerView(new UIViewGroup());\r
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        container_->SetOnDragListener(presenter_);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
         PreLoad();\r
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);\r
     }\r
 \r
     /// @brief 创建页面的视图。\r
     void TraingLimitView::OnSetUpView()\r
     {\r
         View<TraingLimitPresenter>::OnSetUpView();\r
-        // scrollView->Add(title);\r
-        scrollView->Add(TraingLimitList);\r
-        scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
-        RootView::GetInstance()->Add(scrollView);\r
-        TraingLimitList->SetAdapter(p_TraingLimitListAdapter);\r
-        // TraingLimitList->RefreshList(); // 刷新列表\r
+        if (TraingLimitList != nullptr && p_TraingLimitListAdapter != nullptr)\r
+        {\r
+            scrollView->Add(TraingLimitList);\r
+            scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
+            RootView::GetInstance()->Add(scrollView);\r
+            TraingLimitList->SetAdapter(p_TraingLimitListAdapter);\r
+        }\r
         Draw();\r
     }\r
 \r
@@ -169,11 +173,14 @@ namespace OHOS
     void TraingLimitView::OnStop()\r
     {\r
         View<TraingLimitPresenter>::OnStop();\r
-\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
         RootView::GetInstance()->ClearOnKeyActListener();\r
-        // FocusManager::GetInstance()->ClearFocus();\r
         RootView::GetInstance()->RemoveAll();\r
-        // RootView::GetInstance()->ClearFocus();\r
         return;\r
     }\r
 }
\ No newline at end of file