录音列表优化
authorluozheng <1732036298@qq.com>
Fri, 8 Mar 2024 04:44:39 +0000 (12:44 +0800)
committerluozheng <1732036298@qq.com>
Fri, 8 Mar 2024 04:44:39 +0000 (12:44 +0800)
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPresenter.h
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPresenter.cpp

index 0b9e427..3a2c4ce 100644 (file)
@@ -50,16 +50,17 @@ namespace OHOS
     };\r
 \r
     /*\r
-     *录音列表点击监听类\r
+     *录音列表视图监听类\r
      */\r
-    class RecordListViewOnClickListener : public UIView::OnClickListener\r
+    class RecordListViewListener : public UIView::OnClickListener,public UIView::OnDragListener\r
     {\r
     public:\r
-        RecordListViewOnClickListener() {}\r
+        RecordListViewListener() {}\r
 \r
-        ~RecordListViewOnClickListener() {}\r
+        ~RecordListViewListener() {}\r
 \r
         bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
     };\r
 \r
     class RecordingView;\r
index 011de86..c4d6353 100644 (file)
@@ -47,6 +47,13 @@ namespace OHOS
                 delete clicklister;\r
                 clicklister = nullptr;\r
             }\r
+            \r
+            UIView::OnDragListener *dragLister = RecordListScrollView->GetOnDragListener();\r
+            if (dragLister != nullptr)\r
+            {\r
+                delete dragLister;\r
+                dragLister = nullptr;\r
+            }\r
 \r
             delete recordList;\r
             recordList = nullptr;\r
@@ -66,10 +73,7 @@ namespace OHOS
             return false;\r
         }\r
         RecordListScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
-        RecordListScrollView->SetScrollBlankSize(35);\r
-        RecordListScrollView->SetReboundSize(50);\r
-        RecordListScrollView->SetDirection(1);\r
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(RecordingPresenter::GetInstance());\r
+        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(new RecordListViewListener());\r
         if (draglistener == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::draglistener can not be nullptr!");\r
@@ -148,18 +152,31 @@ namespace OHOS
     {\r
         // UIList 的适配器\r
         p_RecordingListAdapter = new RecordingListAdapter();\r
-        p_RecordingListAdapter->SetItemClickListener(new RecordListViewOnClickListener());\r
+        p_RecordingListAdapter->SetItemClickListener(new RecordListViewListener());\r
         recordList = new UIList();\r
         if (recordList == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListView::recordList is nullptr!");\r
             return false;\r
         }\r
-        recordList->SetPosition(43, 120, 380, 120 + 120 * RecordingModel::GetInstance()->GetRecordingListNum());\r
+        recordList->SetPosition(43, 120, 380, 300);\r
         recordList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        recordList->SetAdapter(p_RecordingListAdapter);\r
+        // recordList->SetScrollBlankSize(50); // 设置此滚动视图的空白大小。\r
+        /**\r
+         *设置在此列表滚动时选择子视图的位置,当子视图在指定位置被选中时,回调{@link ListScrollListener}将被调用。*你可以在回调中实现放大和变色效果。\r
+         */\r
+        recordList->SetSelectPosition(233);\r
+        // recordList->EnableAutoAlign(true); // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐\r
+        recordList->SetThrowDrag(true); // 设置手指抬起屏幕后是否继续滚动。\r
+        recordList->SetTouchable(true);\r
+        recordList->SetDraggable(true);\r
+        recordList->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。\r
+        recordList->SetReboundSize(50);\r
+        recordList->SetYScrollBarVisible(true); // 设置 Y 轴滚动条是否可见。\r
+        recordList->SetIntercept(true);         // 设置是否拦截输入事件。如果被截获,视图在本地处理后不会将输入事件传递给父视图。\r
+        \r
         InitRecordingInfo();\r
-        recordList->RefreshList();\r
+        recordList->SetAdapter(p_RecordingListAdapter);\r
         RecordListScrollView->Add(recordList);\r
         return true;\r
     }\r
index b75c190..eca43d3 100644 (file)
@@ -80,6 +80,10 @@ namespace OHOS
                     {\r
                         NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
                     }\r
+                    else if(i == RECORDINGPLAYERVIEW)\r
+                    {\r
+                        p_RecordingView->ChangeView(i, RECORDINGLISTVIEW);\r
+                    }\r
                     else\r
                     {\r
                         p_RecordingView->ChangeView(i, RECORDINGVIEW);\r
@@ -94,7 +98,7 @@ namespace OHOS
             p_RecordingView->ChangeView(RECORDINGVIEW, RECORDINGLISTVIEW);\r
             return true;\r
         }\r
-        return false;\r
+        return true;\r
     }\r
 \r
     /// @brief 解析时间\r
@@ -115,8 +119,8 @@ namespace OHOS
         }\r
 \r
         // 格式化输出为上午/下午几点几分几秒\r
-        strftime(formattedDateTime, 80, "%p %I点%M分%S秒", &timeinfo);\r
-        // strftime(formattedDateTime, 80, "%p %H %M %S", &timeinfo);\r
+        // strftime(formattedDateTime, 80, "%p %I点%M分%S秒", &timeinfo);\r
+        strftime(formattedDateTime, 80, "%p %H %M %S", &timeinfo);\r
         return 1; // 转换成功\r
     }\r
 \r
@@ -254,15 +258,15 @@ namespace OHOS
         return true;\r
     }\r
 \r
-    bool RecordListViewOnClickListener::OnClick(UIView &view, const ClickEvent &event)\r
+    bool RecordListViewListener::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
         UNUSED(event);\r
         RecordingListitemView *p_RecordingListitemView = static_cast<RecordingListitemView *>(&view);\r
         int index = p_RecordingListitemView->GetRecordingListIndex();\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick index:%d\n", index);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnClick index:%d\n", index);\r
         if (index >= RecordingModel::GetInstance()->GetRecordingListNum())\r
         {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewOnClickListener::OnClick is no index");\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordListViewListener::OnClick is no index");\r
             return false;\r
         }\r
         // 保存被点击录音下标\r
@@ -280,8 +284,23 @@ namespace OHOS
             return false;\r
         }\r
         p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGPLAYERVIEW);\r
-       \r
-        \r
+\r
+        return true;\r
+    }\r
+\r
+    bool RecordListViewListener::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        RecordingView *p_RecordingView = RecordingView::GetInstance();\r
+        if (p_RecordingView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView GetInstance fail");\r
+            return false;\r
+        }\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)\r
+        {\r
+            p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGVIEW);\r
+        }\r
         return true;\r
     }\r
 \r