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