显示方式界面优化:适配多国语言和表冠 581/1 581/head
authorluozheng <1732036298@qq.com>
Wed, 24 Jul 2024 12:43:50 +0000 (20:43 +0800)
committerluozheng <1732036298@qq.com>
Wed, 24 Jul 2024 12:43:50 +0000 (20:43 +0800)
code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h
code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp

index 2ff7838..c97f737 100644 (file)
@@ -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
index ca34acb..39ad7f2 100644 (file)
@@ -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()