From: luozheng <1732036298@qq.com> Date: Sun, 29 Sep 2024 13:25:35 +0000 (+0800) Subject: 1.解决勿扰模式内存泄漏问题 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=refs%2Fchanges%2F1055%2Fhead;p=mirrors%2FFD230.git 1.解决勿扰模式内存泄漏问题 2.解决勿扰模式界面中label在切换成其他国语言导致字体遮盖下面的Button问题 3.勿扰模式界面添加编码器控制界面问题 4.解决勿扰模式内存泄漏问题 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/include/DnotDisturbView.h b/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/include/DnotDisturbView.h index 80db09b20..f5f25ef3f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/include/DnotDisturbView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/include/DnotDisturbView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-10 11:58:15 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-06-29 16:04:53 + * @LastEditTime: 2024-09-29 21:04:14 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/include/DnotDisturbView.h */ #ifndef DNOTDISTURB_VIEW_H @@ -45,6 +45,7 @@ namespace OHOS UILabelExt *AttentionLabel{nullptr}; UILabelButtonExt *ButtonOn; UILabelButtonExt *ButtonOff; + UIImageView *temp{nullptr}; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbView.cpp b/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbView.cpp index 7dea6f519..0cff23458 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-10 11:58:21 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-08-26 17:39:08 + * @LastEditTime: 2024-09-29 21:19:46 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbView.cpp */ #include "dnotdisturb/include/DnotDisturbView.h" @@ -71,6 +71,13 @@ namespace OHOS delete ButtonOff; ButtonOff = nullptr; } + if (temp != nullptr) + { + delete temp; + temp = nullptr; + } + delete scrollView; + scrollView = nullptr; } } @@ -89,6 +96,15 @@ namespace OHOS scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); scrollView->SetTouchable(true); scrollView->SetDraggable(true); + 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); UIView::OnDragListener *dragListener = static_cast(DnotDisturbPresenter::GetInstance()); if (dragListener == nullptr) { @@ -110,6 +126,7 @@ namespace OHOS showTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); showTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); showTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(showTitleLabel); /* -------------------------------------------------------------------------- */ DnotDisturbImage = new UIImageView(); if (DnotDisturbImage == nullptr) @@ -125,6 +142,7 @@ namespace OHOS DnotDisturbImage->SetAutoEnable(false); DnotDisturbImage->SetResizeMode(UIImageView::FILL); DnotDisturbImage->SetSrc(PNG_APPLIST_DISTURB_IMAGE); + scrollView->Add(DnotDisturbImage); /* -------------------------------------------------------------------------- */ AttentionLabel = new UILabelExt(); if (AttentionLabel == nullptr) @@ -136,11 +154,12 @@ namespace OHOS AttentionLabel->SetStyle(STYLE_TEXT_FONT, 30); AttentionLabel->SetStyle(STYLE_LINE_HEIGHT, 35); // bool ?勿扰模式已开启是否关闭:开启勿扰模式,手表将不会发出震动与铃声,是否开启 - AttentionLabel->SetTextId(DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() ? STR_DISTURBNOTE_OFF : STR_DO_NOT_DISTURB_MODE); + AttentionLabel->SetTextId(DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() ? STR_DISTURBNOTE_OFF : STR_DO_NOT_DISTURB_MODE); AttentionLabel->SetLineBreakMode(UILabelExt::LINE_BREAK_WRAP); AttentionLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); AttentionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); AttentionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(AttentionLabel); /* -------------------------------------------------------------------------- */ ButtonOn = new UILabelButtonExt(); if (ButtonOn == nullptr) @@ -148,7 +167,7 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DnotDisturbView::ButtonOn new fail!!"); return; } - ButtonOn->SetPosition(256, 320, 120, 120); + ButtonOn->SetPosition(256, AttentionLabel->GetY() + AttentionLabel->GetHeight() + 20, 120, 120); ButtonOn->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); ButtonOn->SetStyle(STYLE_BACKGROUND_OPA, 0x00); const char *ButtonOnImgSrc = "/user/res/SYSTEM_CheckOn.bin"; @@ -156,8 +175,8 @@ namespace OHOS ButtonOn->SetImagePosition(10, 10); ButtonOn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED); ButtonOn->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - UIView::OnClickListener *labelButtonClick1 = static_cast(DnotDisturbPresenter::GetInstance()); - ButtonOn->SetOnClickListener(labelButtonClick1); + ButtonOn->SetOnClickListener(presenter_); + scrollView->Add(ButtonOn); /* -------------------------------------------------------------------------- */ ButtonOff = new UILabelButtonExt(); if (ButtonOff == nullptr) @@ -165,7 +184,7 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DnotDisturbView::ButtonOff new fail!!"); return; } - ButtonOff->SetPosition(111, 320, 120, 120); + ButtonOff->SetPosition(111, AttentionLabel->GetY() + AttentionLabel->GetHeight() + 20, 120, 120); ButtonOff->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); ButtonOff->SetStyle(STYLE_BACKGROUND_OPA, 0x00); const char *ButtonOffImgSrc = "/user/res/SYSTEM_CheckOff.bin"; @@ -173,8 +192,24 @@ namespace OHOS ButtonOff->SetImagePosition(10, 10); ButtonOff->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED); ButtonOff->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); - UIView::OnClickListener *labelButtonClick2 = static_cast(DnotDisturbPresenter::GetInstance()); - ButtonOff->SetOnClickListener(labelButtonClick2); + ButtonOff->SetOnClickListener(presenter_); + scrollView->Add(ButtonOff); + /* -------------------------------------------------------------------------- */ + if ((ButtonOff->GetY() + ButtonOff->GetHeight() > Screen::GetInstance().GetHeight())) + { + if (temp == nullptr) + { + temp = new UIImageView(); + if (temp == nullptr) + { + return; + } + + temp->SetPosition(43, ButtonOff->GetY() + ButtonOff->GetHeight(), 380, 40); + temp->SetVisible(false); + scrollView->Add(temp); + } + } } } @@ -211,23 +246,28 @@ namespace OHOS void DnotDisturbView::OnStart() { View::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_->SetTouchable(true); + container_->SetDraggable(true); + DnotDisturbViewInit(); - // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::DnotDisturbPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + RootView::GetInstance()->SetOnKeyActListener(presenter_); } void DnotDisturbView::OnSetUpView() { View::OnSetUpView(); - scrollView->Add(showTitleLabel); - scrollView->Add(DnotDisturbImage); - scrollView->Add(AttentionLabel); - scrollView->Add(ButtonOn); - scrollView->Add(ButtonOff); - RootView::GetInstance()->Add(scrollView); - container_ = scrollView; + if (scrollView) + { + container_->Add(scrollView); + } Draw(); } @@ -240,8 +280,13 @@ namespace OHOS void DnotDisturbView::OnStop() { - View::OnStop(); + if (container_ != nullptr) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } RootView::GetInstance()->RemoveAll(); RootView::GetInstance()->ClearOnKeyActListener(); ClearAll();