修改消息Slice的显示以及读取 1050/1 1050/head
authorCaisking <3449750381@qq.com>
Sat, 28 Sep 2024 12:40:28 +0000 (20:40 +0800)
committerCaisking <3449750381@qq.com>
Sat, 28 Sep 2024 12:40:28 +0000 (20:40 +0800)
13 files changed:
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageLackView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageLackView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp

index 5d58f72..5804b38 100644 (file)
@@ -538,16 +538,22 @@ namespace OHOS
             C_ScheduleDataReadFromFile();
             mmi_sleep_mode_switch_read();
 
-            /*开机如果设置了密码锁,进行锁屏*/
+            /*开机读取消息历史数据*/
+            if(!MessageModel::GetInstance().LoadMessagesFromStorage())
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessagesFromStorage failed!");
+            }
+
+            /*开机检查如果设置了密码锁,进行锁屏*/
             int lockstate = OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH);  
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lockstate = %d", lockstate);  
             // 打印锁定状态判断  
             if (lockstate == 1)  
             {  
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Native ability state is active.");  
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is locked (lock state == 1)");
                 if (uapi_dev_runtime_get_lock_status() == 0)  
                 {  
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is unlocked (lock status == 0).");  
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is unlocked (lock status == 0)");  
                     uapi_dev_runtime_set_lock_status(1); // 上锁  
                     OHOS::MainModel::GetInstance().setDialState(OHOS::DialState::LOCK, true);  
                 }  
index 0048714..526eca9 100644 (file)
@@ -1,33 +1,4 @@
-/*** 
- * @Date: 2024-07-10 16:58:06
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-08-24 17:36:42
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
- */
-/***
- * @Date: 2024-07-10 16:58:06
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-07-25 10:57:25
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
- */
-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-06-22 17:52:45
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
- */
-/***
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-06-19 17:56:08
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
- */
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: MessageCardView.h
- * Author:
- * Create: 2021-12-21
- */
+
 
 #ifndef MESSAGE_CARD_VIEW_H
 #define MESSAGE_CARD_VIEW_H
@@ -66,11 +37,8 @@ namespace OHOS
 
     private:
         void ClearAll(void);
-        UILabelExt *title{nullptr};
         MessageListAdapter *p_MessageListAdapter{nullptr};
         UIList *MessageList = nullptr;
-        UILabelButtonExt *DeleteButton = nullptr; // 删除按键
-        MessageModel *p_MessageModel{nullptr};
         UIImageView *imageline{nullptr};
     };
 }
index a617465..53adf1f 100644 (file)
@@ -42,7 +42,6 @@ namespace OHOS
     private:
         UIImageView *imageline{nullptr};
         UIImageView *imagemeage{nullptr};
-        UILabelExt *labeltitle{nullptr};
         UILabelExt *labelmeage{nullptr};
 
         void ClearAll(void);
index 457d57e..d8bdf8c 100644 (file)
@@ -59,7 +59,6 @@ namespace OHOS
 
         UILabel *title{nullptr};
         UILabel *time{nullptr};
-        UILabel *message{nullptr};
 
         UILabelButton *messageButton{nullptr};   // 消息
         UILabelButtonExt *deleteButton{nullptr}; // 清除按键
index 1a56c24..dd54950 100644 (file)
@@ -63,15 +63,12 @@ namespace OHOS
 
         /*消息列表界面*/
         UIScrollView *messageView{nullptr};
-        UILabelExt *title{nullptr};
+        UIImageView *imageline2{nullptr};
         MessageListAdapter *p_MessageListAdapter{nullptr};
         UIList *MessageList = nullptr;
-        UILabelButtonExt *DeleteButton = nullptr; // 删除按键
-        UIView::OnDragListener *draglistener{nullptr};
 
         bool viewInitStatus{false};
 
-        MessageModel *g_MessageModel{nullptr};
     };
 } // namespace OHOS
 #endif
\ No newline at end of file
index 75a2403..3e7acea 100644 (file)
@@ -20,6 +20,11 @@ namespace OHOS
 
     MessageListAdapter::~MessageListAdapter()
     {
+        if(DeleteButton)
+        {
+            delete DeleteButton;
+            DeleteButton = nullptr;
+        }
         listData.clear();
     }
 
@@ -98,6 +103,7 @@ namespace OHOS
         else
         {
             item = static_cast<MessageItemView *>(inView);
+            item->TearDownChild();
             item->RemoveAll();
         }
         item->SetUpChild();
index 3cbf620..861644e 100644 (file)
@@ -4,6 +4,7 @@
  * Author:
  * Create: 2021-12-21
  */
+
 #include <string>
 #include "common/image_cache_manager.h"
 #include "ui_resource_image.h"
@@ -52,14 +53,11 @@ namespace OHOS
             delete MessageList;
             MessageList = nullptr;
         }
-        if (DeleteButton != nullptr)
+        if(p_MessageListAdapter != nullptr)
         {
-            delete DeleteButton;
-            DeleteButton = nullptr;
-        }
-        
-        delete p_MessageListAdapter;
-        p_MessageListAdapter = nullptr;
+            delete p_MessageListAdapter;
+            p_MessageListAdapter = nullptr;
+        } 
     }
     void MessageCardView::AddMessageToList(const MessageListItem &item)
     {
@@ -75,15 +73,20 @@ namespace OHOS
         Add(imageline);
 
         // UIList 的适配器
-        p_MessageListAdapter = new MessageListAdapter();
+        if(p_MessageListAdapter == nullptr)
+        {
+            p_MessageListAdapter = new MessageListAdapter();
+        }
+
         p_MessageListAdapter->SetItemClickListener(MessageControlPresenter::GetInstance());
         if (MessageList == nullptr)
         {
             MessageList = new UIList();
         }
+        // MessageList->SetPosition(MORE_LIST_POSITION_X, MORE_LIST_POSITION_Y, 466, 466);
         MessageList->SetPosition(MORE_LIST_POSITION_X, MORE_LIST_POSITION_Y, 466, 466);
-        MessageList->SetScrollBlankSize(35);
-        MessageList->SetReboundSize(50);
+        // MessageList->SetScrollBlankSize(35);
+        // MessageList->SetReboundSize(50);
         MessageList->SetThrowDrag(true);
         MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
         MessageList->SetMaxScrollDistance(1000); // 1000: max scroll distance
@@ -130,16 +133,11 @@ namespace OHOS
     }
     void MessageCardView::SetUpView(MessageCardView *messageCardView)
     {
-        p_MessageModel = &MessageModel::GetInstance();
-        if (p_MessageModel == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_MessageModel fail");
-            return;
-        }
         /* 加载list */
-        p_MessageModel->InitMessageListItems();
-        const MessageListItem *itemInfo = p_MessageModel->GetMessageListItems();
-        for (int i = 0; i < p_MessageModel->GetMessageCount(); i++)
+        MessageModel::GetInstance().InitMessageListItems();
+        const MessageListItem *itemInfo =   MessageModel::GetInstance().GetMessageListItems();
+        uint8_t num = MessageModel::GetInstance().GetMessageCount();
+        for (int i = 0; i < num; i++)
         {
             messageCardView->AddMessageToList(itemInfo[i]);
         }
index d734715..dbca24a 100644 (file)
@@ -34,11 +34,13 @@ namespace OHOS
         RemoveAll();
         if (messageLackView != nullptr)
         {
+            messageLackView->RemoveAll();
             delete messageLackView;
             messageLackView = nullptr;
         }
         if (messageCardView != nullptr)
         {
+            messageCardView->RemoveAll();
             delete messageCardView;
             messageCardView = nullptr;
         }
index 3df4d0c..7edac4b 100644 (file)
@@ -47,11 +47,6 @@ namespace OHOS
             delete imagemeage;
             imagemeage = nullptr;
         }
-        if (labeltitle != nullptr)
-        {
-            delete labeltitle;
-            labeltitle = nullptr;
-        }
         if (labelmeage != nullptr)
         {
             delete labelmeage;
@@ -69,7 +64,6 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageLackView::CreateUIViewGroup");
 
         /*初始化label*/
-        InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
         InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30);
         labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
         /*初始化image*/
@@ -78,7 +72,6 @@ namespace OHOS
 
         Add(imageline);
         Add(imagemeage);
-        Add(labeltitle);
         Add(labelmeage);
 
         SetDraggable(false);
index 5b83e40..8ad2b49 100644 (file)
@@ -109,7 +109,13 @@ extern "C"
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "request %d\r\n", request->msgId);
         if (request->msgId == TOPIC_EVENT_MESSAGE_UPDATA)
         {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TOPIC_EVENT_MESSAGE_UPDATA");
             ancs_data_info_t *messageInfo = new ancs_data_info_t();
+            if(messageInfo == NULL)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new ancs_data_info_t fail");
+                return;
+            }
             int rets = memcpy_s(messageInfo, sizeof(ancs_data_info_t), (ancs_data_info_t *)request->data, request->len);
             if (rets != EOK)
             {
@@ -142,7 +148,7 @@ namespace OHOS
     MessageModel::MessageModel()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageModel");
-        LoadMessagesFromStorage();
+        // LoadMessagesFromStorage();
     }
     MessageModel::~MessageModel()
     {
@@ -202,7 +208,7 @@ namespace OHOS
         }  
 
         // 清空现有数据  
-        MessageVector.clear();  
+        // MessageVector.clear();  
 
         // 将JSON数据转换为MessageData并添加到消息数组中  
         int dataCount = cJSON_GetArraySize(messageArray);  
@@ -321,8 +327,12 @@ namespace OHOS
         bool unread_state = false;            // 初始化未读状态
         numberOfItems = MessageVector.size(); // 获取 MessageVector 的大小
 
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前的项数是 %d", numberOfItems);
-
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "当前的项数是 %d", numberOfItems);
+        if(numberOfItems == 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageVector is empty");
+            return;
+        }
         // 从 MessageVector 的末尾开始迭代
         for (int i = numberOfItems - 1, count = 0; i >= 0 && count < MaxMessageListCount; i--, count++)
         {
@@ -369,7 +379,7 @@ namespace OHOS
         data.labelTitle = messageInfo->title;
         data.timestamp = messageInfo->time;
 
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddMessageData data.isRead is %d,data.labelDetails is %s,data.labelTitle is %s,data.timestamp is %d", data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(), data.timestamp);
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddMessageData data.isRead is %d,data.labelDetails is %s,data.labelTitle is %s,data.timestamp is %d", data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(), data.timestamp);
 
         char labelTime[20];
         if (uapi_get_TIME_STR(data.timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC)
@@ -470,31 +480,8 @@ namespace OHOS
     void MessageModel::UpdateMessageView()
     {
         // 更新主界面卡片
-        if (MessageControlView::GetInstance())
+        if (MessageControlView::GetInstance()&&MainViewSample::GetInstance())
         {
-#if 0
-            MessageControlView::GetInstance()->SetLackView(false);
-            auto messageCard = MessageCardView::GetInstance();
-            if (messageCard) // 检查主界面卡片实例
-            {
-                uint8_t status = MessageModel::GetInstance().HasDataVector();
-                if (status)
-                {
-                    InitMessageListItems(); // 更新列表item
-                    MessageListAdapter *p_MessageListAdapter = new MessageListAdapter();
-                    messageCard->GetList()->RefreshList();
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateListView messageCardView");
-                }
-                else
-                {
-                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "No new data to refresh the message card list.");
-                }
-            }
-            else
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateListView: messageCardView instance is nullptr");
-            }
-#endif
             // 配置主界面回退界面
             CardId Id = MainViewSample::GetInstance()->GetHorCurrentCard();
             MainModel::GetInstance().SetFromSetCardView(true);
index cf5397b..ae92dbe 100644 (file)
@@ -84,7 +84,10 @@ namespace OHOS
         {
             NativeAbility::GetInstance().Back();
         }
-
+        if(event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
+        {
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+        }
         return true;
     }
 
index 3cc5de9..abb9c33 100644 (file)
@@ -66,15 +66,17 @@ namespace OHOS
     }
     void MessageShowView::DeInitView()
     {
+        if(container_)
+        {
+            container_->RemoveAll();
+        }
+
         delete title;
         title = nullptr;
 
         delete time;
         time = nullptr;
 
-        delete message;
-        message = nullptr;
-
         delete messageButton;
         messageButton = nullptr;
 
@@ -190,9 +192,6 @@ namespace OHOS
         messageButton->SetText(messageStr.c_str());
         // messageButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
         /* -------------------------------------------------------------------------- */
-        InitUILabel(message, 63, 165, 340, 100, "message", messageStr.c_str(), DEFAULT_VECTOR_FONT_FILENAME, 30);
-        message->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); // 宽固定 高度变长!
-        message->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
         /*加载清除按键*/
         InitButtonExt(deleteButton, 43, 157 + defaultRectWidth + 20, 380, 100, DELETEBUTTON, STR_CLEAN, 30);
         deleteButton->SetOnClickListener(static_cast<UIView::OnClickListener *>(MessageShowPresenter::GetInstance()));
@@ -200,7 +199,6 @@ namespace OHOS
         container_->Add(title);
         container_->Add(time);
         container_->Add(messageButton);
-        // container_->Add(message);
         container_->Add(deleteButton);
         /* -------------------------------------------------------------------------- */
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitView is ok!");
@@ -219,6 +217,7 @@ namespace OHOS
         titleStr = data->labelTitle;
         timeStr = data->labelTime;
         messageStr = data->labelDetails;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateMessage title %s time %s message %s", titleStr.c_str(), timeStr.c_str(), messageStr.c_str());
     }
     void MessageShowView::PreLoad(void)
     {
index 71d272d..bbb2b4f 100644 (file)
  * @Date: 2024-07-12 11:19:45
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-08-09 14:03:51
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp
  */
 
 #include "message/include/MessageView.h"
-#include "message/include/MessagePresenter.h"
 #include "message/include/MessageModel.h"
+#include "message/include/MessagePresenter.h"
 
 #include "UiConfig.h"
-#include "wearable_log.h"
 #include "uicomponents/UIComponents.h"
-namespace OHOS
-{
-    static constexpr char *lineimagePath = "/user/res/message/Line.bin";
-    static constexpr char *messageimagePath = "/user/res/message/message.bin";
-    static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;
-    static constexpr int16_t More_LIST_POSITION_X = 43;
-    static constexpr int16_t More_LIST_POSITION_Y = 120;
-    static constexpr int16_t More_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。
-    static constexpr int16 MAX_SCR_DIS = 1000;
-    static constexpr int16 LIST_POS = 20;
-    static constexpr int16 SNUM_2 = 2;
-    static constexpr uint8_t NUM_2 = 2;
-
-    static MessageView *g_pMessageView{nullptr};
-
-    MessageView::MessageView()
-    {
-        // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        g_pMessageView = this;
-    }
-
-    MessageView::~MessageView()
-    {
-        // if (viewInitStatus == true)
-        // {
-        //     DeInitView();
-        // }
-        UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
-        UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
-
-        g_pMessageView = nullptr;
-    }
-
-    MessageView *MessageView::GetInstance()
-    {
-        return g_pMessageView;
-    }
-    void MessageView::InitView()
-    {
-        // 展示界面
-        if (MessageModel::GetInstance().HasDataVector())
-        {
-            printf("存在数据!\r\n");
-            SetPopupViewStatus(PopupMessage::MessagePopup, true);
-        }
-        else
-        {
-            printf("不存在数据!\r\n");
-            SetPopupViewStatus(PopupMessage::LackPopup, true);
-        }
-    }
-    void MessageView::DeInitView()
-    {
-        lackView->RemoveAll();
-        messageView->RemoveAll();
-        MessageList->RemoveAll();
-
-        delete labeltitle;
-        labeltitle = nullptr;
-
-        delete labelmeage;
-        labelmeage = nullptr;
-
-        delete imageline;
-        imageline = nullptr;
-
-        delete imagemeage;
-        imagemeage = nullptr;
-
-        delete lackView;
-        lackView = nullptr;
-
-        delete title;
-        title = nullptr;
-        delete title;
-        title = nullptr;
-
-        delete DeleteButton;
-        DeleteButton = nullptr;
-
-        delete MessageList;
-        MessageList = nullptr;
-
-        delete messageView;
-        messageView = nullptr;
-
-        delete draglistener;
-        draglistener = nullptr;
-    }
-
-    void MessageView::PreLoad(void)
-    {
-        if (!viewInitStatus)
-        {
-            InitView();
-            viewInitStatus = true;
-        }
-    }
-
-    /*无数据界面*/
-    void MessageView::ShowLackView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
-        lackView = new UIScrollView();
-        if (lackView == nullptr)
-        {
-            return;
-        }
-        lackView->SetPosition(0, 0);
-        lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-        lackView->SetScrollBlankSize(20);
-        lackView->SetReboundSize(50);
-        lackView->SetDirection(1);
-        /*初始化label*/
-        InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
-        /*初始化image*/
-        InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath);
-        InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath);
-
-        lackView->Add(imageline);
-        lackView->Add(imagemeage);
-        lackView->Add(labeltitle);
-        lackView->Add(labelmeage);
-
-        container_->Add(lackView);
-        lackView->SetDraggable(true);
-        lackView->SetTouchable(true);
-
-        lackView->SetOnDragListener(presenter_);
-
-        lackView->SetVisible(false); // 界面隐藏
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
-    }
-
-    /*数据界面*/
-    void MessageView::ShowMessageView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
-        messageView = new UIScrollView();
-        if (messageView == nullptr)
-        {
-            return;
-        }
-        messageView->SetPosition(0, 0);
-        messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-        messageView->SetScrollBlankSize(20);
-        messageView->SetReboundSize(50);
-        messageView->SetDirection(1);
-
-        /*初始化label*/
-        InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
-        messageView->Add(title);
-
-        // UIList 的适配器
-        p_MessageListAdapter = new MessageListAdapter();
-        p_MessageListAdapter->SetItemClickListener(presenter_);
-        if (MessageList == nullptr)
-        {
-            MessageList = new UIList();
-        }
-        MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466, 466);
-        MessageList->SetScrollStateListener(this);
-        MessageList->SetThrowDrag(true);
-        MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        // 设置手指抬起屏幕后的最大滚动距离
-        MessageList->SetMaxScrollDistance(1000); // 1000: max scroll distance
-        // 设置手指抬起屏幕后的补偿距离
-        MessageList->SetSwipeACCLevel(800); // 800: compensation distance
-        // 设置拖动加速
-        MessageList->SetDragACCLevel(5); // 5: drag acceleration
-        MessageList->SetYScrollBarVisible(true);
-
-        MessageList->SetOnClickListener(presenter_);
-        messageView->SetOnDragListener(presenter_);
-
-        messageView->SetVisible(false); // 隐藏界面
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
-    }
-    void MessageView::UpdataButton(int num)
-    {
-        int top = num * 240;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "old top %d", top);
-        top > 466 ? top += 130 : top -= 100;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new top %d", top);
-        DeleteButton->SetPosition(43, top);
-    }
-    /*控制显示界面*/
-    void MessageView::SetPopupViewStatus(PopupMessage view, bool status)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view);
-
-        if (view == PopupMessage::LackPopup)
-        {
-            MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息
-            lackView->SetVisible(true);                           // 隐藏界面
-            messageView->SetVisible(false);                       // 隐藏界面
-        }
-        else if (view == PopupMessage::MessagePopup)
-        {
-            MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息
-            lackView->SetVisible(false);                         // 隐藏界面
-            messageView->SetVisible(true);                       // 隐藏界面
-        }
-    }
-
-    /// @brief 页面启动时需要执行的代码逻辑
-    void MessageView::OnStart()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
-        View<MessagePresenter>::OnStart();
-
-        // SetContainerView(new UIScrollView());
-        container_ = new UIScrollView();
-        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-        container_->SetOnDragListener(presenter_);
-        container_->SetTouchable(true);
-        container_->SetDraggable(true);
-        // container_->SetFullScreenBlur(true); // 设置高斯模糊
-
-        ShowLackView();
-        ShowMessageView();
-        PreLoad();
-
-        SetContainerView(container_);
-
-        RootView::GetInstance()->SetOnKeyActListener(presenter_);
-    }
-    void MessageView::AddMessageToList(const MessageListItem &item)
-    {
-        p_MessageListAdapter->AddListItem(item);
-    }
-    // 获取列表
-    UIList *MessageView::GetList()
-    {
-        return MessageList;
-    }
-    /// @brief 创建页面的视图
-    void MessageView::OnSetUpView()
-    {
-        View<MessagePresenter>::OnSetUpView();
-        if (MessageModel::GetInstance().HasDataVector())
-        {
-            messageView->Add(MessageList);
-            messageView->Add(DeleteButton);
-            // messageView->SetFullScreenBlur(true);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add");
-            container_->Add(messageView);
-            // container_->SetFullScreenBlur(true);
-            MessageList->SetAdapter(p_MessageListAdapter);
-        }
-        Draw();
-    }
-
-    /// @brief 销毁页面的视图
-    void MessageView::OnTearDownView()
-    {
-        View<MessagePresenter>::OnTearDownView();
-        return;
-    }
-
-    /// @brief 页面结束时需要执行的销毁逻辑。
-    void MessageView::OnStop()
-    {
-        View<MessagePresenter>::OnStop();
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll();
-            delete container_;
-            container_ = nullptr;
-        }
-        RootView::GetInstance()->RemoveAll();
-        return;
+#include "wearable_log.h"
+namespace OHOS {
+static constexpr char *lineimagePath = "/user/res/message/Line.bin";
+static constexpr char *messageimagePath = "/user/res/message/message.bin";
+static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;
+static constexpr int16_t More_LIST_POSITION_X = 43;
+static constexpr int16_t More_LIST_POSITION_Y = 120;
+static constexpr int16_t More_SCROLLBLANKSIZE =
+    35; // 设置此滚动视图的空白大小。
+static constexpr int16 MAX_SCR_DIS = 1000;
+static constexpr int16 LIST_POS = 20;
+static constexpr int16 SNUM_2 = 2;
+static constexpr uint8_t NUM_2 = 2;
+
+static MessageView *g_pMessageView{nullptr};
+
+MessageView::MessageView() {
+  // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+  g_pMessageView = this;
+}
+
+MessageView::~MessageView() {
+  if (viewInitStatus == true) {
+    DeInitView();
+  }
+  //   UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+  //   UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+
+  g_pMessageView = nullptr;
+}
+
+MessageView *MessageView::GetInstance() { return g_pMessageView; }
+void MessageView::InitView() {
+  // 展示界面
+  if (MessageModel::GetInstance().HasDataVector()) {
+    printf("存在数据!\r\n");
+    SetPopupViewStatus(PopupMessage::MessagePopup, true);
+  } else {
+    printf("不存在数据!\r\n");
+    SetPopupViewStatus(PopupMessage::LackPopup, true);
+  }
+}
+void MessageView::DeInitView() {
+  // 移除视图中的所有子项
+  if (lackView) {
+    lackView->RemoveAll();
+  }
+
+  if (messageView) {
+    messageView->RemoveAll();
+  }
+
+  if (p_MessageListAdapter) {
+    delete p_MessageListAdapter;
+    p_MessageListAdapter = nullptr;
+  }
+
+  if (MessageList) {
+    MessageList->RemoveAll();
+    delete MessageList;
+    MessageList = nullptr;
+  }
+
+  // 删除所有标签和图像指针,确保指针非空
+  if (labeltitle) {
+    delete labeltitle;
+    labeltitle = nullptr;
+  }
+
+  if (labelmeage) {
+    delete labelmeage;
+    labelmeage = nullptr;
+  }
+
+  if (imageline) {
+    delete imageline;
+    imageline = nullptr;
+  }
+
+  if (imageline2) {
+    delete imageline2;
+    imageline2 = nullptr;
+  }
+
+  if (imagemeage) {
+    delete imagemeage;
+    imagemeage = nullptr;
+  }
+
+  if (lackView) {
+    delete lackView;
+    lackView = nullptr;
+  }
+
+  if (messageView) {
+    delete messageView;
+    messageView = nullptr;
+  }
+}
+
+void MessageView::PreLoad(void) {
+  if (!viewInitStatus) {
+    InitView();
+    viewInitStatus = true;
+  }
+}
+
+/*无数据界面*/
+void MessageView::ShowLackView() {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
+  lackView = new UIScrollView();
+  if (lackView == nullptr) {
+    return;
+  }
+  lackView->SetPosition(0, 0);
+  lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+  lackView->SetScrollBlankSize(20);
+  lackView->SetReboundSize(50);
+  lackView->SetDirection(1);
+  /*初始化label*/
+  InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle",
+               STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
+  InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO,
+               DEFAULT_VECTOR_FONT_FILENAME, 30);
+  labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
+  /*初始化image*/
+  InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath);
+  InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath);
+
+  lackView->Add(imageline);
+  lackView->Add(imagemeage);
+  lackView->Add(labeltitle);
+  lackView->Add(labelmeage);
+
+  container_->Add(lackView);
+  lackView->SetDraggable(true);
+  lackView->SetTouchable(true);
+
+  lackView->SetOnDragListener(presenter_);
+
+  lackView->SetVisible(false); // 界面隐藏
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
+}
+
+/*数据界面*/
+void MessageView::ShowMessageView() {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
+  messageView = new UIScrollView();
+  if (messageView == nullptr) {
+    return;
+  }
+  messageView->SetPosition(0, 0);
+  messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+  messageView->SetHorizontalScrollState(false); // 设置横向不可以滚动
+  messageView->SetDirection(0);
+  messageView->SetVerticalScrollState(false); // 禁止垂直滑动
+
+  InitImageView(imageline2, 193, 30, 80, 8, "image", lineimagePath);
+  messageView->Add(imageline2);
+
+  // UIList 的适配器
+  if (p_MessageListAdapter == nullptr) {
+    p_MessageListAdapter = new MessageListAdapter();
+  }
+
+  p_MessageListAdapter->SetItemClickListener(presenter_);
+  if (MessageList == nullptr) {
+    MessageList = new UIList();
+  }
+  // MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466,
+  // 466);
+  MessageList->SetPosition(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+  MessageList->SetScrollStateListener(this);
+  MessageList->SetThrowDrag(true);
+  MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+  MessageList->SetMaxScrollDistance(1000);
+  MessageList->SetSwipeACCLevel(800);
+  MessageList->SetDragACCLevel(5);
+  MessageList->SetIntercept(true);
+
+  MessageList->SetOnClickListener(presenter_);
+  messageView->SetOnDragListener(presenter_);
+
+  messageView->SetVisible(false); // 隐藏界面
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
+}
+
+/*控制显示界面*/
+void MessageView::SetPopupViewStatus(PopupMessage view, bool status) {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view);
+
+  if (view == PopupMessage::LackPopup) {
+    MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息
+    lackView->SetVisible(true);                           // 隐藏界面
+    messageView->SetVisible(false);                       // 隐藏界面
+  } else if (view == PopupMessage::MessagePopup) {
+    MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息
+    lackView->SetVisible(false);                         // 隐藏界面
+    messageView->SetVisible(true);                       // 隐藏界面
+  }
+}
+
+/// @brief 页面启动时需要执行的代码逻辑
+void MessageView::OnStart() {
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
+  View<MessagePresenter>::OnStart();
+
+  // SetContainerView(new UIScrollView());
+  container_ = new UIScrollView();
+  container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+                          Screen::GetInstance().GetHeight());
+  container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+  container_->SetOnDragListener(presenter_);
+  container_->SetTouchable(true);
+  container_->SetDraggable(true);
+  // container_->SetFullScreenBlur(true); // 设置高斯模糊
+  ShowMessageView();
+  ShowLackView();
+
+  PreLoad();
+  SetContainerView(container_);
+
+  RootView::GetInstance()->SetOnKeyActListener(presenter_);
+}
+void MessageView::AddMessageToList(const MessageListItem &item) {
+  p_MessageListAdapter->AddListItem(item);
+}
+// 获取列表
+UIList *MessageView::GetList() { return MessageList; }
+/// @brief 创建页面的视图
+void MessageView::OnSetUpView() {
+  View<MessagePresenter>::OnSetUpView();
+  if (MessageModel::GetInstance().HasDataVector()) {
+    messageView->Add(MessageList);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add");
+    container_->Add(messageView);
+    if (p_MessageListAdapter) {
+      MessageList->SetAdapter(p_MessageListAdapter);
     }
-}
\ No newline at end of file
+  }
+  Draw();
+}
+
+/// @brief 销毁页面的视图
+void MessageView::OnTearDownView() {
+  View<MessagePresenter>::OnTearDownView();
+  return;
+}
+
+/// @brief 页面结束时需要执行的销毁逻辑。
+void MessageView::OnStop() {
+  View<MessagePresenter>::OnStop();
+  if (container_ != nullptr) {
+    container_->RemoveAll();
+    delete container_;
+    container_ = nullptr;
+  }
+  RootView::GetInstance()->RemoveAll();
+  return;
+}
+} // namespace OHOS
\ No newline at end of file