解决叠字问题
authorxue <2144439972@qq.com>
Fri, 7 Nov 2025 05:54:04 +0000 (13:54 +0800)
committerxue <2144439972@qq.com>
Fri, 7 Nov 2025 05:54:04 +0000 (13:54 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdDialogueView.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdLullabyView.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/include/ThunderBirdReminderView.h
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdDialogueView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdLullabyView.cpp
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdReminderView.cpp

index b063110..253158e 100644 (file)
@@ -7,6 +7,7 @@
 #include "components/ui_image_view.h"
 #include "components/ui_image_animator.h"
 #include "components/ui_label_button.h"
+#include "components/ui_label_ext_with_shadow.h"
 #include "UiConfig.h"
 
 namespace OHOS
@@ -141,8 +142,7 @@ namespace OHOS
 
     private:
         UIViewGroup *group{nullptr};
-        UILabelExt *TextLabel{nullptr};
-        UILabelExt *TextLabel_Y{nullptr};
+        UILabelExtWithShadow *TextLabel{nullptr};
         UIImageAnimatorView *speakAnimator{nullptr};
         UIImageAnimatorView *listenAnimator{nullptr};
         UIImageView *listenIcon{nullptr};
index 2317a31..86d8145 100644 (file)
@@ -6,6 +6,7 @@
 #include "components/ui_label_ext.h"
 #include "components/ui_image_view.h"
 #include "components/ui_image_animator.h"
+#include "components/ui_label_ext_with_shadow.h"
 #include <cstdint>
 
 namespace OHOS
@@ -45,7 +46,7 @@ namespace OHOS
 
     private:
         UIViewGroup *group{nullptr};
-        UILabelExt *TextLabel{nullptr};
+        UILabelExtWithShadow *TextLabel{nullptr};
         UILabelExt *TextLabel_Y{nullptr};
         UILabelExt *RemindLabel{nullptr};
         UIImageView *RemindIcon{nullptr};
index 4eef1b0..f7cce2e 100644 (file)
@@ -7,6 +7,7 @@
 #include "components/ui_image_view.h"
 #include "components/ui_box_progress.h"
 #include "components/ui_label_button.h"
+#include "components/ui_label_ext_with_shadow.h"
 
 namespace OHOS
 {
@@ -47,8 +48,7 @@ namespace OHOS
 
     private:
         UIViewGroup *group{nullptr};
-        UILabelExt *TextLabel{nullptr};
-        UILabelExt *TextLabel_Y{nullptr};
+        UILabelExtWithShadow *TextLabel{nullptr};
         UILabelExt *RemindLabel{nullptr};
         UILabelButton *RemindButton{nullptr};
         UIImageView *RemindIcon{nullptr};
index ba512a7..6010366 100644 (file)
@@ -34,8 +34,6 @@ namespace OHOS
             group = nullptr;
         }
         if (TextLabel != nullptr) { delete TextLabel; TextLabel = nullptr; }
-        if (TextLabel_Y != nullptr) { delete TextLabel_Y; TextLabel_Y = nullptr; }
-
         if (speakAnimator != nullptr) { delete speakAnimator; speakAnimator = nullptr; }
         if (listenAnimator != nullptr) { delete listenAnimator; listenAnimator = nullptr; }
         if (listenIcon != nullptr) { delete listenIcon; listenIcon = nullptr; }
@@ -116,24 +114,14 @@ namespace OHOS
             return nullptr;
         }
         group->SetPosition(0, 0, 360, 360);
-
         // 公共控件
-        TextLabel_Y = new UILabelExt();
-        if (TextLabel_Y)
-        {
-            TextLabel_Y->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000);
-            TextLabel_Y->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-            TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
-            TextLabel_Y->SetRollSpeed(75);
-            TextLabel_Y->SetVisible(false);
-            group->Add(TextLabel_Y);
-        }
-        TextLabel = new UILabelExt();
+        TextLabel = new UILabelExtWithShadow();
         if (TextLabel)
         {
             TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
             TextLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+            TextLabel->SetShadowOffsetX(2);
+            TextLabel->SetShadowOffsetY(2);
             TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
             TextLabel->SetRollSpeed(75);
             TextLabel->SetVisible(false);
@@ -190,7 +178,6 @@ namespace OHOS
     {
         if (group == nullptr) { return; }
         if (TextLabel) { TextLabel->SetVisible(false);}
-        if (TextLabel_Y) { TextLabel_Y->SetVisible(false);}
         if (speakAnimator) { speakAnimator->SetVisible(false); speakAnimator->Stop(); }
         if (listenAnimator) { listenAnimator->SetVisible(false); listenAnimator->Stop(); }
         if (listenIcon) { listenIcon->SetVisible(false); }
@@ -200,15 +187,9 @@ namespace OHOS
         {
             ThunderBirdModel::GetInstance()->LowFrequence();//减低视频帧率
             ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
-            if (TextLabel_Y)
-            { 
-                TextLabel_Y->SetPosition(37, 66, 325, 42);
-                TextLabel_Y->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-                TextLabel_Y->SetVisible(true);  
-            }
             if (TextLabel)
             {
-                TextLabel->SetPosition(TextLabel_Y->GetX()-2, TextLabel_Y->GetY()-2, 325, 42);
+                TextLabel->SetPosition(37, 66, 325, 42);
                 TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
                 TextLabel->SetVisible(true);
             }
@@ -236,13 +217,6 @@ namespace OHOS
                 TextLabel->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_LEFT);
                 TextLabel->SetVisible(true);
             }
-            if (TextLabel_Y)
-            {
-                TextLabel_Y->SetPosition(113, 66, 180, 42);
-                TextLabel_Y->SetText("超认真聆听中");
-                TextLabel_Y->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_LEFT);
-                TextLabel_Y->SetVisible(true);
-            }
 
             //动效图标
             if (listenAnimator) { listenAnimator->SetVisible(true); listenAnimator->Start(); }
@@ -262,16 +236,9 @@ namespace OHOS
             if (ThunderBirdModel::GetInstance()) {
                 currentStatusText = ThunderBirdModel::GetInstance()->GetCurrentStatusText();
             }
-            if (TextLabel_Y)
-            {
-                TextLabel_Y->SetPosition(37, 66, 325, 42);
-                TextLabel_Y->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-                TextLabel_Y->SetText(currentStatusText.c_str());
-                TextLabel_Y->SetVisible(true);
-            }
             if (TextLabel)
             {
-                TextLabel->SetPosition(TextLabel_Y->GetX()-2, TextLabel_Y->GetY()-2, 325, 42);       
+                TextLabel->SetPosition(37, 66, 325, 42);       
                 TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
                 TextLabel->SetText(currentStatusText.c_str());
                 TextLabel->SetVisible(true);
@@ -285,15 +252,14 @@ namespace OHOS
     }
     void ThunderBirdDialogueView::UpdateDialogueText(const char *text)
     {
-        if(!TextLabel || !TextLabel_Y) return;    
+        if(!TextLabel) return;    
         // 设置文本
         TextLabel->SetText(text); 
-        TextLabel_Y->SetText(text);
     }
 
     void ThunderBirdDialogueView::AudioPlaybackEnd()
     {
-        if(!TextLabel || !TextLabel_Y) return;
+        if(!TextLabel) return;
         //TextLabel->SetText("还有什么想聊的吗?");
         //TextLabel_Y->SetText("还有什么想聊的吗?");
         if(speakAnimator) {speakAnimator->Stop();}
index 57b5bac..661c1f4 100644 (file)
@@ -186,11 +186,10 @@ namespace OHOS
         {
             TextLabel_Y->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
             TextLabel_Y->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-            TextLabel_Y->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
             TextLabel_Y->SetVisible(false);
             group->Add(TextLabel_Y);
         }
-        TextLabel = new UILabelExt();
+        TextLabel = new UILabelExtWithShadow();
         if (TextLabel)
         {
             TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -244,7 +243,11 @@ namespace OHOS
     {
         ThunderBirdModel::GetInstance()->StopCountUpTimer();//每次进入哄睡界面都停止定时器
         if (group == nullptr) { return; }
-        if (TextLabel) { TextLabel->SetVisible(false); TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); }
+        if (TextLabel) 
+        { TextLabel->SetVisible(false); 
+            TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);  
+            TextLabel->SetShadowOffsetX(0);
+            TextLabel->SetShadowOffsetY(0); }
         if (TextLabel_Y) { TextLabel_Y->SetVisible(false); }
         if (RemindLabel) { RemindLabel->SetVisible(false);}
         if (RemindIcon) { RemindIcon->SetVisible(false); }
@@ -263,12 +266,6 @@ namespace OHOS
                 TextLabel->SetText("按    说「哄我睡觉」");
                 TextLabel->SetVisible(true);
             }
-            if (TextLabel_Y)
-            {
-                TextLabel_Y->SetPosition(45, 66, 280, 42);
-                TextLabel_Y->SetText("按    说「哄我睡觉」");
-                TextLabel_Y->SetVisible(true);
-            }
             if(RemindIcon)
             {
                 RemindIcon->SetPosition(75, 65, 36, 36);
@@ -405,18 +402,11 @@ namespace OHOS
                 TextLabel->SetPosition(35, 64, 300, 42);
                 TextLabel->SetText("正在准备故事...");//设置初始文字
                 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
-                TextLabel->SetRollSpeed(55); 
+                TextLabel->SetShadowOffsetX(2);
+                TextLabel->SetShadowOffsetY(2);
+                TextLabel->SetRollSpeed(65); 
                 TextLabel->SetVisible(true);
             }
-            if (TextLabel_Y)
-            {
-                TextLabel_Y->SetPosition(37, 66, 300, 42);
-                TextLabel_Y->SetText("正在准备故事...");//设置初始文字
-                TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
-                TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000);
-                TextLabel_Y->SetRollSpeed(55); 
-                TextLabel_Y->SetVisible(true);
-            }
             break;
         }
         case THUNDERBIRD_LULLABYVIEW_5:
@@ -478,15 +468,14 @@ namespace OHOS
 
     void ThunderBirdLullabyView::UpdateLullabyText(const char *text)
     {
-        if(!TextLabel || !TextLabel_Y) {
+        if(!TextLabel) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: TextLabel or TextLabel_Y is null");
             return;
         }
         
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdLullabyView::UpdateLullabyText: 更新故事文字: %s", text ? text : "null");
         // 设置文本
-        TextLabel->SetText(text); 
-        TextLabel_Y->SetText(text);
+        TextLabel->SetText(text);
     }
 }
 
index 6a871a5..525f939 100644 (file)
@@ -35,7 +35,6 @@ namespace OHOS
             group = nullptr;
         }
         if (TextLabel != nullptr) { delete TextLabel; TextLabel = nullptr; }
-        if (TextLabel_Y != nullptr) { delete TextLabel_Y; TextLabel_Y = nullptr; }
         if (RemindLabel != nullptr) { delete RemindLabel; RemindLabel = nullptr; }
         if (RemindIcon != nullptr) { delete RemindIcon; RemindIcon = nullptr; }
         if (RemindIcon2 != nullptr) { delete RemindIcon2; RemindIcon2 = nullptr; }
@@ -55,15 +54,7 @@ namespace OHOS
         group->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
 
         // 公共控件
-        TextLabel_Y = new UILabelExt();
-        if (TextLabel_Y)
-        {
-            TextLabel_Y->SetVisible(false);
-            TextLabel_Y->SetStyle(STYLE_LINE_SPACE, 10);
-            TextLabel_Y->SetStyle(STYLE_LETTER_SPACE, 1);
-            group->Add(TextLabel_Y);
-        }
-        TextLabel = new UILabelExt();
+        TextLabel = new UILabelExtWithShadow();
         if (TextLabel)
         {
             TextLabel->SetVisible(false);
@@ -123,8 +114,10 @@ namespace OHOS
     void ThunderBirdReminderView::Show(int16_t showView)
     {
         if (group == nullptr) { return; }
-        if (TextLabel) { TextLabel->SetVisible(false); TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);}
-        if (TextLabel_Y) { TextLabel_Y->SetVisible(false); TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);}
+        if (TextLabel) { TextLabel->SetVisible(false); 
+            TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+            TextLabel->SetShadowOffsetX(0);
+            TextLabel->SetShadowOffsetY(0);}
         if (RemindLabel) { RemindLabel->SetVisible(false); }
         if (RemindButton) { RemindButton->SetVisible(false); }
         if (RemindIcon) { RemindIcon->SetVisible(false);  RemindIcon->SetStyle(STYLE_BACKGROUND_OPA, 0x00);}
@@ -159,26 +152,16 @@ namespace OHOS
                 RemindIcon->SetSrc("/user/res/notification.bin");
                 RemindIcon->SetVisible(true);
             }
-            if (TextLabel_Y)
-            {
-                // 黑色文本:位置比白色文本偏移2像素
-                TextLabel_Y->SetPosition(37, 66, 325, 42);
-                TextLabel_Y->SetText("你有一条提醒");
-                TextLabel_Y->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-                TextLabel_Y->SetStyle(STYLE_TEXT_COLOR, 0xff000000);
-                TextLabel_Y->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
-                TextLabel_Y->SetRollSpeed(35);
-                TextLabel_Y->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-                TextLabel_Y->SetVisible(true);
-            }
             if (TextLabel)
             {
                 // 文本位置:图标右侧,紧挨着
-                TextLabel->SetPosition(TextLabel_Y->GetX()-2, TextLabel_Y->GetY()-2, 325, 42);
+                TextLabel->SetPosition(37, 66, 325, 42);
                 TextLabel->SetText("你有一条提醒");
                 TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); // 左对齐,因为已经整体居中了
+                TextLabel->SetShadowOffsetX(2);
+                TextLabel->SetShadowOffsetY(2);
                 TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); 
-                TextLabel->SetRollSpeed(35);
+                TextLabel->SetRollSpeed(65);
                 TextLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
                 TextLabel->SetVisible(true);
             }  
@@ -430,7 +413,6 @@ namespace OHOS
         if (group == nullptr) { return; }
         if (RemindButton) { RemindButton->SetVisible(false); }
         if (TextLabel) { TextLabel->SetVisible(false); }
-        if (TextLabel_Y) { TextLabel_Y->SetVisible(false); }
         if (RemindLabel) { RemindLabel->SetVisible(false); }
         if (RemindIcon) { RemindIcon->SetVisible(false); }
         if (RemindIcon2) { RemindIcon2->SetVisible(false); }
@@ -483,17 +465,14 @@ namespace OHOS
         } else if (title) {
             // 只有标题
             TextLabel->SetText(title);
-            TextLabel_Y->SetText(title);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updated task reminder text with title only: %s", title);
         } else if (content) {
             // 只有内容
             TextLabel->SetText(content);
-            TextLabel_Y->SetText(content);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updated task reminder text with content only: %s", content);
         } else {
             // 都没有,使用默认文本
             TextLabel->SetText("你有一条提醒");
-            TextLabel_Y->SetText("你有一条提醒");
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Updated task reminder text with default text");
         }
     }