From c548105797e46256ff54f7d05871d9e9aed0794a Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Wed, 24 Jul 2024 20:43:50 +0800 Subject: [PATCH] =?utf8?q?=E6=98=BE=E7=A4=BA=E6=96=B9=E5=BC=8F=E7=95=8C?= =?utf8?q?=E9=9D=A2=E4=BC=98=E5=8C=96=EF=BC=9A=E9=80=82=E9=85=8D=E5=A4=9A?= =?utf8?q?=E5=9B=BD=E8=AF=AD=E8=A8=80=E5=92=8C=E8=A1=A8=E5=86=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../themestyle/include/ThemeStyleView.h | 19 ++- .../themestyle/src/ThemeStyleView.cpp | 156 ++++++++++++------ 2 files changed, 120 insertions(+), 55 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h index 2ff78385b..c97f73704 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-14 09:40:13 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-07-06 18:33:51 + * @LastEditTime: 2024-07-24 20:33:55 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h */ @@ -24,7 +24,7 @@ namespace OHOS { - static constexpr const uint16_t MAX_STYLE = MAX_THEME_STYLE-1; + static constexpr const uint16_t MAX_STYLE = MAX_THEME_STYLE - 1; static constexpr char *THEME_STYLE_LIST = "themestyleList"; // 列表 static constexpr char *THEME_STYLE_HEXAGONS = "themestyleHexagons"; // 蜂窝 static constexpr char *THEME_STYLE_FOOTBALL = "themestyleFootball"; // 足球 @@ -39,6 +39,15 @@ namespace OHOS { public: struct LabelButtonConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + const char *viewId; + }; + + struct LabelConfig { int16_t left; int16_t top; @@ -46,8 +55,8 @@ namespace OHOS int16_t height; int16_t fontSize; int16_t lineHeigh; - const char *viewId; int16_t textId; + uint8_t lineBreakMode; }; struct ImageConfig @@ -70,6 +79,7 @@ namespace OHOS void OnStop() override; private: + UILabelExt *ThemeStyleLabelViewinit(LabelConfig &labelconfig); bool CreateThemeStyleScrollView(void); bool CreateThemeStyleLabelView(void); bool CreateThemeStyleLabelButtonView(void); @@ -81,8 +91,11 @@ namespace OHOS UIScrollView *scrollView{nullptr}; UILabelExt *titleText; UILabelButtonExt *ThemeStyleLabelButton[MAX_STYLE]{nullptr}; + UILabelExt *ThemeStyleLabel[MAX_STYLE]{nullptr}; UIImageView *ThemeStyleImage[MAX_STYLE]{nullptr}; UILabelButtonExt *ExitLabelButton{nullptr}; + UILabelExt *ExitLabel{nullptr}; + bool initViewStatus{false}; }; } #endif // SET_THEMESTYLE_VIEW_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp index ca34acbd0..39ad7f285 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-06-14 09:40:20 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-07-06 18:34:04 + * @LastEditTime: 2024-07-24 20:43:01 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp */ @@ -35,36 +35,37 @@ namespace OHOS void ThemeStyleView::ClearAll(void) { - if (scrollView != nullptr) + if (initViewStatus) { - scrollView->RemoveAll(); + if (scrollView != nullptr) + { + scrollView->RemoveAll(); - delete titleText; - titleText = nullptr; + delete titleText; + titleText = nullptr; - for (int i = 0; i < MAX_STYLE; i++) - { - delete ThemeStyleLabelButton[i]; - ThemeStyleLabelButton[i] = nullptr; + for (int i = 0; i < MAX_STYLE; i++) + { + delete ThemeStyleLabelButton[i]; + ThemeStyleLabelButton[i] = nullptr; - delete ThemeStyleImage[i]; - ThemeStyleImage[i] = nullptr; - } + delete ThemeStyleLabel[i]; + ThemeStyleLabel[i] = nullptr; - delete ExitLabelButton; - ExitLabelButton = nullptr; + delete ThemeStyleImage[i]; + ThemeStyleImage[i] = nullptr; + } - delete scrollView; - scrollView = nullptr; - } - } + delete ExitLabelButton; + ExitLabelButton = nullptr; - // 设置按键监听 - static void SetKeyActListener() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::ThemeStylePresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + delete ExitLabel; + ExitLabel = nullptr; + + delete scrollView; + scrollView = nullptr; + } + } } UILabelButtonExt *ThemeStyleView::ThemeStyleLabelButtonViewInit(LabelButtonConfig &labelbuttonconfig) @@ -80,14 +81,12 @@ namespace OHOS labelButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); labelButton->SetImagePosition(300, 30); labelButton->SetImageSrc(PNG_CHECKBOX_OFF_IMAGE, PNG_CHECKBOX_OFF_IMAGE); - labelButton->SetTextId(labelbuttonconfig.textId); - labelButton->SetAlign(TEXT_ALIGNMENT_LEFT); - labelButton->SetLabelPosition(100, 0); - labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelbuttonconfig.fontSize); - labelButton->SetStyle(STYLE_LINE_HEIGHT, labelbuttonconfig.lineHeigh); + // labelButton->SetTextId(labelbuttonconfig.textId); + // labelButton->SetAlign(TEXT_ALIGNMENT_LEFT); + // labelButton->SetLabelPosition(100, 0); + // labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelbuttonconfig.fontSize); + // labelButton->SetStyle(STYLE_LINE_HEIGHT, labelbuttonconfig.lineHeigh); labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED); - labelButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED); - labelButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED); labelButton->SetOnClickListener(presenter_); return labelButton; @@ -105,6 +104,24 @@ namespace OHOS return Image; } + UILabelExt *ThemeStyleView::ThemeStyleLabelViewinit(LabelConfig &labelconfig) + { + UILabelExt *label = new UILabelExt(); + if (label == nullptr) + { + return nullptr; + } + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); + label->SetTextId(labelconfig.textId); + label->SetLineBreakMode(labelconfig.lineBreakMode); + label->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(70); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + bool ThemeStyleView::CreateThemeStyleScrollView(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThemeStyleView::InitThemeStyleScrollView"); @@ -118,6 +135,8 @@ namespace OHOS scrollView->SetScrollBlankSize(SCROLLBLANKSIZE); scrollView->SetReboundSize(REBOUNDSIZE); scrollView->SetHorizontalScrollState(false); + scrollView->RequestFocus(); + scrollView->SetRotateFactor(1.0); scrollView->SetTouchable(true); scrollView->SetDraggable(true); container_->Add(scrollView); @@ -134,14 +153,55 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleText new fail!"); return false; } - titleText->SetPosition(83, 52, 300, 35); + titleText->SetPosition(83, 50, 300, 35); titleText->SetTextId(STR_DISPLAY_MODE); // 显示方式 titleText->SetStyle(STYLE_TEXT_FONT, 30); titleText->SetStyle(STYLE_LINE_HEIGHT, 35); - titleText->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + titleText->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); titleText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); titleText->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); scrollView->Add(titleText); + /* -------------------------------------------------------------------------- */ + // const char *viewId[MAX_STYLE] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_FOOTBALL}; + // uint16_t textId[MAX_STYLE] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_GRID_DISPLAY}; + int16_t textId[MAX_STYLE] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY}; + LabelConfig labelConfig = { + .left = 143, + .top = 153, + .width = 180, + .height = 35, + .fontSize = 30, + .lineHeigh = 35, + .textId = 0, + .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION, + }; + for (int16_t i = 0; i < MAX_STYLE; i++) + { + labelConfig.top = 153 + 120 * i; + labelConfig.textId = textId[i]; + ThemeStyleLabel[i] = ThemeStyleLabelViewinit(labelConfig); + if (ThemeStyleLabel[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThemeStyleLabel[%d] is nullptr", i); + return false; + } + scrollView->Add(ThemeStyleLabel[i]); + } + /* -------------------------------------------------------------------------- */ + ExitLabel = new UILabelExt(); + if (ExitLabel == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ExitLabel new fail!"); + return false; + } + ExitLabel->SetPosition(113, labelConfig.top + 120, 240, 35); + ExitLabel->SetTextId(STR_CLOSE); /*关闭*/ + ExitLabel->SetStyle(STYLE_TEXT_FONT, 30); + ExitLabel->SetStyle(STYLE_LINE_HEIGHT, 35); + ExitLabel->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + ExitLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + ExitLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + scrollView->Add(ExitLabel); return true; } @@ -153,22 +213,14 @@ namespace OHOS .top = 120, .width = 380, .height = 100, - .fontSize = 30, - .lineHeigh = 35, .viewId = THEME_STYLE_LIST, - .textId = STR_LIST_DISPLAY, }; - int top = 120; - // const char *viewId[MAX_STYLE] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_FOOTBALL}; - // uint16_t textId[MAX_STYLE] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_GRID_DISPLAY}; const char *viewId[MAX_STYLE] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS}; - uint16_t textId[MAX_STYLE] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY}; for (int i = 0; i < MAX_STYLE; i++) { - labelbuttonconfig.top = top + 120 * i; + labelbuttonconfig.top = 120 + 120 * i; labelbuttonconfig.viewId = viewId[i]; - labelbuttonconfig.textId = textId[i]; ThemeStyleLabelButton[i] = ThemeStyleLabelButtonViewInit(labelbuttonconfig); if (ThemeStyleLabelButton[i] == nullptr) { @@ -188,12 +240,7 @@ namespace OHOS ExitLabelButton->Resize(labelbuttonconfig.width, labelbuttonconfig.height); ExitLabelButton->SetViewId(THEMESTYLEVIEWEXIT); ExitLabelButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); - ExitLabelButton->SetTextId(STR_CLOSE); - ExitLabelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - ExitLabelButton->SetStyle(STYLE_LINE_HEIGHT, labelbuttonconfig.lineHeigh); ExitLabelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED); - ExitLabelButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED); - ExitLabelButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED); ExitLabelButton->SetOnClickListener(presenter_); scrollView->Add(ExitLabelButton); @@ -210,7 +257,7 @@ namespace OHOS .src = THEMESTYLE_LIST_IMAGEPATH, }; int y = 150; - //const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_FOOTBALL_IMAGEPATH}; + // const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_FOOTBALL_IMAGEPATH}; const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH}; for (int i = 0; i < MAX_STYLE; i++) { @@ -231,13 +278,15 @@ namespace OHOS void ThemeStyleView::ThemeStyleViewInit(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThemeStyleView::ThemeStyleViewInit"); - if (!CreateThemeStyleScrollView() || !CreateThemeStyleLabelView() || - !CreateThemeStyleLabelButtonView() || !CreateThemeStyleImageView()) + if (!CreateThemeStyleScrollView() || !CreateThemeStyleLabelButtonView() || + !CreateThemeStyleLabelView() || !CreateThemeStyleImageView()) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThemeStyleView::ThemeStyleViewInit fail!!"); return; } UpdateSelectedStyle(); + + initViewStatus = true; } void ThemeStyleView::OnStart() @@ -250,8 +299,11 @@ namespace OHOS container_->SetTouchable(true); container_->SetDraggable(true); - ThemeStyleViewInit(); - SetKeyActListener(); + if (!initViewStatus) + { + ThemeStyleViewInit(); + } + RootView::GetInstance()->SetOnKeyActListener(presenter_); } void ThemeStyleView::OnSetUpView() -- 2.17.1