优化省电模式进入UI;并且适配按键回退
authorCaisking <3449750381@qq.com>
Sat, 10 Aug 2024 06:22:18 +0000 (14:22 +0800)
committerCaisking <3449750381@qq.com>
Sat, 10 Aug 2024 06:22:18 +0000 (14:22 +0800)
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveElePresenter.h
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleView.h
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveEleView.cpp

index 2a3894e..56a6e06 100644 (file)
@@ -1,35 +1,43 @@
+/***\r
+ * @Date: 2024-04-15 10:55:58\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-09 15:01:58\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveElePresenter.h\r
+ */\r
 #ifndef _SAVEELE_PRESENTER_H\r
 #define _SAVEELE_PRESENTER_H\r
- \r
 \r
 #include "Presenter.h"\r
 #include "SaveEleView.h"\r
- \r
+\r
 namespace OHOS\r
 {\r
+    static constexpr const char *SAVEBUTTONOK = "buttonok";\r
+    static constexpr const char *SAVEBUTTONNO = "buttonno";\r
+\r
     class SaveEleView;\r
-       \r
     class SaveElePresenter : public Presenter<SaveEleView>,\r
-                                 public UIView::OnClickListener,\r
-                                 public UIView::OnDragListener\r
+                             public UIView::OnClickListener,\r
+                             public UIView::OnDragListener,\r
+                             public RootView::OnKeyActListener\r
     {\r
     public:\r
         SaveElePresenter();\r
         virtual ~SaveElePresenter();\r
- \r
-        void OnStart() override;  \r
-        void OnPause() override;  \r
-        void OnResume() override; \r
-        void OnStop() override;   \r
- \r
-        static SaveElePresenter *GetInstance();     \r
- \r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static SaveElePresenter *GetInstance();\r
+\r
     private:\r
-        //因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
-        bool OnClick(UIView &view, const ClickEvent &event) override; \r
-        bool OnDrag(UIView &view, const DragEvent &event) override;   \r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
     };\r
-} //namespace OHOS\r
- \r
- \r
-#endif  //SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
+} // namespace OHOS\r
+\r
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
index 3464edc..b4602f9 100644 (file)
@@ -3,12 +3,13 @@
 \r
 #include "BaseView.h"\r
 #include "View.h"\r
-#include <ui_scroll_view.h>\r
+\r
 #include "components/ui_view_group.h"\r
 #include "components/ui_label.h"\r
 #include "components/ui_label_ext.h"\r
 #include "components/ui_image_view.h"\r
 #include "components/ui_button.h"\r
+#include "components/ui_scroll_view.h"\r
 \r
 #include "SaveElePresenter.h"\r
 namespace OHOS\r
@@ -26,32 +27,23 @@ namespace OHOS
         void OnSetUpView() override;\r
         void OnTearDownView() override;\r
         void OnStop() override;\r
-        void Init();\r
+        void InitView();\r
         void DeInit();\r
-        UIView *GetView();\r
 \r
     private:\r
         UIView::OnDragListener *draglistener{nullptr};\r
 \r
-        // void InitImage(void);\r
-        // void InitLable(void);\r
-\r
-        // 以下控件属性通过new实例化后,add到对应root属性上;\r
-        // SaveEleView(constSaveEleView &) = delete;\r
-        // SaveEleView &operator=(constSaveEleView &) = delete;\r
         SaveEleView(SaveEleView &&) = delete;\r
         SaveEleView &operator=(SaveEleView &&) = delete;\r
 \r
-        UIViewGroup *container_ = nullptr;\r
-        UIScrollView *scrollView1_ = nullptr;\r
-        UILabel *label1_ = nullptr;\r
-        UILabel *label3_ = nullptr;\r
-        UILabel *label4_ = nullptr;\r
-        UIButton *button1_ = nullptr;\r
-        UIButton *button2_ = nullptr;\r
-        UIImageView *image2_ = nullptr;\r
-        UIImageView *image1_ = nullptr;\r
-        UILabel *label2_ = nullptr;\r
+        UILabelExt *labeltitle = nullptr;\r
+        UILabelExt *labelnote = nullptr;\r
+        UILabelExt *labelkown = nullptr;\r
+        UIButton *buttonok = nullptr;\r
+        UIButton *buttonno = nullptr;\r
+        UIImageView *iamgeicon = nullptr;\r
+\r
+        UIScrollView *container_{nullptr};\r
     };\r
 } // namespace OHOS\r
 #endif // SaveEle_PRESENTER_H\r
index 350f3eb..963e645 100644 (file)
@@ -1,7 +1,16 @@
+/*** \r
+ * @Date: 2024-05-30 15:59:37\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-09 15:14:49\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp\r
+ */\r
 #include "AppViewIDs.h"\r
 #include "components/ui_label_ext.h"\r
-#include"ui_resource_string.h"\r
+#include "ui_resource_string.h"\r
 #include "NativeAbility.h"\r
+#include "KeyInputListener.h"\r
+#include "custom_utils.h"\r
+#include "common/key_code.h"\r
 \r
 #include "saveele/include/SaveElePresenter.h"\r
 \r
@@ -56,27 +65,35 @@ namespace OHOS
     bool SaveElePresenter::OnDrag(UIView &view, const DragEvent &event)\r
     {\r
 \r
-        // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
-        // {\r
-        //     NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
-        // }\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().Back();\r
+        }\r
         UNUSED(view);\r
         return true;\r
     }\r
 \r
     bool SaveElePresenter::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
-        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
-        if (strcmp(view.GetViewId(), "button1") == 0)\r
+        if (strcmp(view.GetViewId(), SAVEBUTTONNO) == 0)\r
+        {\r
+            NativeAbility::GetInstance().Back();\r
+        }\r
+        if (strcmp(view.GetViewId(), SAVEBUTTONOK) == 0)\r
         {\r
-            // NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
-            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+            NativeAbility::GetInstance().EnterSlice(VIEW_SAVEBAT);\r
         }\r
-        if (strcmp(view.GetViewId(), "button2") == 0)\r
+        return true;\r
+    }\r
+    bool SaveElePresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+    {\r
+        unsigned short keyID = event.GetKeyId();\r
+        unsigned short keyState = event.GetState();\r
+        // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SAVEBAT);\r
+            NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
index 967f2d8..14bbc29 100644 (file)
@@ -1,26 +1,41 @@
-\r
+/***\r
+ * @Date: 2024-04-15 10:55:58\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-09 14:41:32\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveEleView.cpp\r
+ */\r
 \r
 #include "saveele/include/SaveEleView.h"\r
+#include "saveele/include/SaveElePresenter.h"\r
 \r
 #include "common/image_cache_manager.h"\r
 #include "UiConfig.h"\r
 #include "ui_resource_image.h"\r
 #include <ui_scroll_view.h>\r
 #include "components/ui_button.h"\r
+#include "uicomponents/UIComponents.h"\r
+#include "ui_resource_string.h"\r
+#include "components/ui_scroll_view.h"\r
+\r
 namespace OHOS\r
 {\r
 \r
     static SaveEleView *g_pSaveEleView{nullptr};\r
+    static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;\r
+\r
+    static constexpr char *iconImgPath = "/user/res/Save_Ele/SaveEle.bin";\r
+    static constexpr char *butnoImgPath = "/user/res/Save_Ele/Save_Error.bin";\r
+    static constexpr char *butokImgPath = "/user/res/Save_Ele/Save_Right.bin";\r
 \r
     SaveEleView::SaveEleView()\r
     {\r
-\r
         g_pSaveEleView = this;\r
     }\r
 \r
     SaveEleView::~SaveEleView()\r
     {\r
-        DeInit();\r
+        UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);\r
+        UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);\r
         g_pSaveEleView = nullptr;\r
     }\r
 \r
@@ -29,306 +44,75 @@ namespace OHOS
         return g_pSaveEleView;\r
     }\r
 \r
-    void SaveEleView::Init()\r
+    void SaveEleView::InitView()\r
     {\r
         if (container_ == nullptr)\r
         {\r
-            container_ = new UIViewGroup();\r
+            container_ = new UIScrollView();\r
             container_->SetPosition(0, 0, 466, 466);\r
             container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
         }\r
 \r
-        // Add ScrollView to App\r
-        if (scrollView1_ == nullptr)\r
-        {\r
-            scrollView1_ = new UIScrollView();\r
-        }\r
-        scrollView1_->SetPosition(0, 0);        // widget's left position and top position\r
-        scrollView1_->Resize(466, 466);         // widget's width and height\r
-        scrollView1_->SetViewId("scrollView1"); // Set style\r
-        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-\r
-        // Set additional property\r
-        scrollView1_->SetDirection(1);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnDragListener *scrollView1Drag = static_cast<UIView::OnDragListener *>(SaveElePresenter::GetInstance());\r
-        scrollView1_->SetOnDragListener(scrollView1Drag);\r
-        // Add to rootView\r
-        container_->Add(scrollView1_);\r
-        scrollView1_->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label1_ == nullptr)\r
-        {\r
-            label1_ = new UILabel();\r
-        }\r
-        label1_->SetPosition(173, 52); // widget's left position and top position\r
-        label1_->Resize(120, 35);      // widget's width and height\r
-        label1_->SetViewId("label1");  // Set style\r
-        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label1_->SetStyle(STYLE_LINE_SPACE, 0);\r
-        label1_->SetStyle(STYLE_LETTER_SPACE, 1);\r
-        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
-        // Set additional property\r
-        label1_->SetText("省电模式");\r
-        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label1_->SetRollSpeed(0);\r
-        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(label1_);\r
-        label1_->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label3_ == nullptr)\r
-        {\r
-            label3_ = new UILabel();\r
-        }\r
-        label3_->SetPosition(33, 440); // widget's left position and top position\r
-        label3_->Resize(200, 60);      // widget's width and height\r
-        label3_->SetViewId("label3");  // Set style\r
-        label3_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label3_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        /*初始化label*/\r
+        InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_POWER_SAVE_MODE, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        InitLabelExt(labelnote, 53, 217, 360, 200, "labletitle", STR_SAVENOTE, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        InitLabelExt(labelkown, 53, 385, 360, 100, "labelrecord", STR_SAVEBACK, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        labelkown->SetTextColor(Color::Orange());\r
 \r
-        // Set additional property\r
-        label3_->SetText("长按屏幕3秒以上或充电可退\n出省电模式");\r
-        label3_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label3_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xc3, 0x00, 0xff));\r
-        label3_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label3_->SetRollSpeed(0);\r
-        label3_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        /*初始化图片*/\r
+        InitImageView(iamgeicon, 188, 121, 80, 90, "saveicon", iconImgPath);\r
 \r
-        // Add to scrollView1\r
-        scrollView1_->Add(label3_);\r
-        label3_->SetVisible(true);\r
+        /*初始化按键*/\r
+        InitButton(buttonno, 110, 501, 100, 100, SAVEBUTTONNO);\r
+        buttonno->SetImageSrc(butnoImgPath, butnoImgPath);\r
+        buttonno->SetOnClickListener(presenter_);\r
 \r
-        // Add Label to App\r
-        if (label4_ == nullptr)\r
-        {\r
-            label4_ = new UILabel();\r
-        }\r
-        label4_->SetPosition(173, 547); // widget's left position and top position\r
-        label4_->Resize(400, 395);      // widget's width and height\r
-        label4_->SetViewId("label4");   // Set style\r
-        label4_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label4_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
-        // Set additional property\r
-        label4_->SetText("是否开启");\r
-        label4_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label4_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
-        label4_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label4_->SetRollSpeed(0);\r
-        label4_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(label4_);\r
-        label4_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button1_ == nullptr)\r
-        {\r
-            button1_ = new UIButton();\r
-        }\r
-        button1_->SetPosition(110, 636); // widget's left position and top position\r
-        button1_->Resize(100, 100);      // widget's width and height\r
-        button1_->SetViewId("button1");  // Set style\r
-        button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        char *button1defaultImgSrc = "/user/res/Save_Ele/Save_Error.bin";\r
-        char *button1triggeredImgSrc = nullptr;\r
-        button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
-        button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffff1919, UIButton::PRESSED);\r
-        button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(SaveElePresenter::GetInstance());\r
-        button1_->SetOnClickListener(button1Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button1_);\r
-        button1_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button2_ == nullptr)\r
-        {\r
-            button2_ = new UIButton();\r
-        }\r
-        button2_->SetPosition(255, 636); // widget's left position and top position\r
-        button2_->Resize(100, 100);      // widget's width and height\r
-        button2_->SetViewId("button2");  // Set style\r
-        button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        char *button2defaultImgSrc = "/user/res/Save_Ele/Save_Right.bin";\r
-        char *button2triggeredImgSrc = nullptr;\r
-        button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);\r
-        button2_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff19ff5e, UIButton::PRESSED);\r
-        button2_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button2Click = static_cast<UIView::OnClickListener *>(SaveElePresenter::GetInstance());\r
-        button2_->SetOnClickListener(button2Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button2_);\r
-        button2_->SetVisible(true);\r
-\r
-        // Add ImageView to App\r
-        if (image2_ == nullptr)\r
-        {\r
-            image2_ = new UIImageView();\r
-        }\r
-        image2_->SetPosition(183, 775); // widget's left position and top position\r
-        image2_->Resize(100, 100);      // widget's width and height\r
-        image2_->SetViewId("image2");   // Set style\r
-\r
-        // Set additional property\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(image2_);\r
-        image2_->SetVisible(true);\r
-\r
-        // Add ImageView to App\r
-        if (image1_ == nullptr)\r
-        {\r
-            image1_ = new UIImageView();\r
-        }\r
-        image1_->SetPosition(188, 121); // widget's left position and top position\r
-        image1_->Resize(90, 90);        // widget's width and height\r
-        image1_->SetViewId("image1");   // Set style\r
-\r
-        // Set additional property\r
-        char *image1imagesPath = "/user/res/Save_Ele/SaveEle.bin";\r
-        image1_->SetSrc(image1imagesPath);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(image1_);\r
-        image1_->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label2_ == nullptr)\r
-        {\r
-            label2_ = new UILabel();\r
-        }\r
-        label2_->SetPosition(33, 217); // widget's left position and top position\r
-        label2_->Resize(400, 395);     // widget's width and height\r
-        label2_->SetViewId("label2");  // Set style\r
-        label2_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label2_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        InitButton(buttonok, 255, 501, 100, 100, SAVEBUTTONOK);\r
+        buttonok->SetImageSrc(butokImgPath, butokImgPath);\r
+        buttonok->SetOnClickListener(presenter_);\r
 \r
-        // Set additional property\r
-        label2_->SetText("开启省电模式会关闭非必要的\n蓝牙连接(通话/耳机蓝牙),以\n及传感器监测(心率监测及血\n氧监测等会停止)等功能\n 仅保留时间日期可查看");\r
-        label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label2_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
-        label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label2_->SetRollSpeed(0);\r
-        label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(label2_);\r
-        label2_->SetVisible(true);\r
-    }\r
-\r
-    void SaveEleView::DeInit()\r
-    {\r
-        scrollView1_->RemoveAll();\r
-        container_->RemoveAll();\r
-        if (label1_ != nullptr)\r
-        {\r
-            delete label1_;\r
-            label1_ = nullptr;\r
-        }\r
-        if (label3_ != nullptr)\r
-        {\r
-            delete label3_;\r
-            label3_ = nullptr;\r
-        }\r
-        if (label4_ != nullptr)\r
-        {\r
-            delete label4_;\r
-            label4_ = nullptr;\r
-        }\r
-        if (button1_ != nullptr)\r
-        {\r
-            delete button1_;\r
-            button1_ = nullptr;\r
-        }\r
-        if (button2_ != nullptr)\r
-        {\r
-            delete button2_;\r
-            button2_ = nullptr;\r
-        }\r
-        if (image2_ != nullptr)\r
-        {\r
-            delete image2_;\r
-            image2_ = nullptr;\r
-        }\r
-        if (image1_ != nullptr)\r
-        {\r
-            delete image1_;\r
-            image1_ = nullptr;\r
-        }\r
-        if (label2_ != nullptr)\r
-        {\r
-            delete label2_;\r
-            label2_ = nullptr;\r
-        }\r
-        if (scrollView1_ != nullptr)\r
-        {\r
-            delete scrollView1_;\r
-            scrollView1_ = nullptr;\r
-        }\r
-        if (container_ != nullptr)\r
-        {\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
+        container_->Add(labeltitle);\r
+        container_->Add(labelnote);\r
+        container_->Add(labelkown);\r
+        container_->Add(iamgeicon);\r
+        container_->Add(buttonno);\r
+        container_->Add(buttonok);\r
     }\r
 \r
-    UIView *SaveEleView::GetView()\r
-    {\r
-        Init();\r
-        return container_;\r
-    }\r
     void SaveEleView::OnStart()\r
     {\r
+\r
+        View<SaveElePresenter>::OnStart();\r
+\r
         container_ = new UIScrollView();\r
         if (container_ == nullptr)\r
         {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail");\r
             return;\r
         }\r
-        container_->SetPosition(0, 0);\r
-        container_->SetWidth(Screen::GetInstance().GetWidth());\r
-        container_->SetHeight(Screen::GetInstance().GetHeight() * 2);\r
-\r
-        // 创建 draglistener 实例并设置为拖动监听器\r
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SaveElePresenter::GetInstance());\r
-        if (draglistener == nullptr)\r
-        {\r
-            return;\r
-        }\r
-        container_->SetOnDragListener(draglistener);\r
+        container_->SetScrollBlankSize(35);\r
+        container_->SetReboundSize(50);\r
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
 \r
+        container_->SetOnDragListener(presenter_);\r
         container_->SetTouchable(true);\r
         container_->SetDraggable(true);\r
+        container_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);\r
+        container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
 \r
-        GetView();\r
-        RootView::GetInstance()->Add(container_);\r
+        InitView();\r
+        SetContainerView(container_);\r
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);\r
     }\r
 \r
     void SaveEleView::OnSetUpView()\r
     {\r
-\r
         View<SaveElePresenter>::OnSetUpView();\r
         Draw();\r
     }\r
 \r
     void SaveEleView::OnTearDownView()\r
     {\r
-\r
         View<SaveElePresenter>::OnTearDownView();\r
         return;\r
     }\r
@@ -336,6 +120,12 @@ namespace OHOS
     void SaveEleView::OnStop()\r
     {\r
         View<SaveElePresenter>::OnStop();\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
         RootView::GetInstance()->RemoveAll();\r
         return;\r
     }\r