录音界面添加:
authorluozheng <1732036298@qq.com>
Tue, 27 Feb 2024 03:34:56 +0000 (11:34 +0800)
committerluozheng <1732036298@qq.com>
Tue, 27 Feb 2024 03:34:56 +0000 (11:34 +0800)
基本UI已经实现,还需要完善(将一些以slice实现的界面改成subView)

27 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeletePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeleteView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeletePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeleteView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordView.cpp [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_RECORD_IMAGE.bin [new file with mode: 0644]

index 95f3aa7..526ea07 100644 (file)
@@ -302,6 +302,18 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/classicbluetooth/src/ClassicBlueToothView.cpp
 
+    #录音
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeletePresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeleteView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordGoingPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordGoingView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordListPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordListView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordPlayPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordPlayView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordView.cpp
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageItemView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageModel.cpp
index 06c135a..3e3e516 100644 (file)
@@ -55,6 +55,12 @@ typedef enum : uint16_t
     VIEW_QUICK_ACCESS,            // 快速访问
     VIEW_FAST_TRAINING,           // 快速训练
     VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示
+    /* ----------------------------------- 录音 ----------------------------------- */
+    VIEW_RECORD,
+    VIEW_RECORD_LIST,
+    VIEW_RECORD_PLAY,
+    VIEW_RECORD_DELETE,
+    VIEW_RECORD_GOING,
     /* ---------------------------------- 测试界面 ---------------------------------- */
     VIEW_DIAL,    // 切换表盘
     VIEW_MESSAGE, // 信息通知
index 9f54da6..752986c 100644 (file)
@@ -30,6 +30,12 @@ namespace OHOS
         void InitIndoorWalkSlice(void);
         void InitRebootSlice(void);
         void InitUISampleSlice(void);
+        /* ----------------------------------- 录音 ----------------------------------- */
+        void InitRecordingSlice(void);
+        void InitRecordingListSlice(void);
+        void InitRecordingPlaySlice(void);
+        void InitRecordingDeleteSlice(void);
+        void InitRecordingGoingSlice(void);
         /* ----------------------------------- 天气 ----------------------------------- */
         void InitWeatherSlice(void);
         void InitWeatherReportSlice(void);
index 1215843..8114e24 100644 (file)
@@ -198,7 +198,20 @@ namespace OHOS
     static constexpr const char *PNG_ALIPAY_PAY_ICON_WHITE = APP_RES_PATH "/alipay/ALIPAY_PAY_ICON_WHITE.bin";
     static constexpr const char *PNG_ALIPAY_PAY_ICON_GREY = APP_RES_PATH "/alipay/ALIPAY_PAY_ICON_GREY.bin";
     /* -------------------------------------------------------------------------- */
-
+    /* ----------------------------------- 录音 ----------------------------------- */
+    static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/record/animator1.bin";
+    static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/record/animator2.bin";
+    static constexpr const char *PNG_RECORD1_IMAGE = APP_RES_PATH "/record/RECORD1.bin";
+    static constexpr const char *PNG_RECORD2_IMAGE = APP_RES_PATH "/record/RECORD2.bin";
+    static constexpr const char *PNG_RECORD3_IMAGE = APP_RES_PATH "/record/RECORD3.bin";
+    static constexpr const char *PNG_UNIVERSAL_PAUSE_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PAUSE.bin";                   // 暂停
+    static constexpr const char *PNG_UNIVERSAL_PLAY_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PLAY.bin";                     // 播放
+    static constexpr const char *PNG_RECORD_PLAY_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_BACKGROUND.bin";     // 背景
+    static constexpr const char *PNG_RECORD_PLAY_PROVE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_PROVE.bin";               // 上一首
+    static constexpr const char *PNG_RECORD_PLAY_NEXT_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_NEXT.bin";                 // 下一首
+    static constexpr const char *PNG_RECORD_PLAY_DELETE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_DELETE.bin";             // 删除
+    static constexpr const char *PNG_RECORD_PLAY_VOLUME_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_VOLUME.bin";             // 音量
+    static constexpr const char *PNG_RECORD_DELETE_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_DELETE_BACKGROUND.bin"; // 删除录音的背景图
     /* ---------------------------------- 闹钟图片 ---------------------------------- */
     static constexpr const char *ALARM_ADD_BUTTON_PATH = APP_RES_PATH "/BLUE_ADD.bin";
     static constexpr const char *ALARM_CLOCK_CLOSE_ADD_PATH = APP_RES_PATH "/CLOSE_RING_CLOCK.bin";
@@ -251,6 +264,7 @@ namespace OHOS
     static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin";   // 打电话
     static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin"; // 指南针
     static constexpr const char *PNG_APPLIST_WEATHER_IMAGE = APP_RES_PATH "/APPLIST_WEATHER_IMAGE.bin"; // 天气
+    static constexpr const char *PNG_APPLIST_RECORD_IMAGE = APP_RES_PATH "/APPLIST_RECORD_IMAGE.bin";   // 录音
     /* ---------------------------------- 快速训练 ---------------------------------- */
     static constexpr const char *PNG_TRAING_BOUTTONMORE_IMAGE = APP_RES_PATH "/Training/More.bin";
     static constexpr const char *PNG_TRAING_BUTTONGRONG_IMAGE = APP_RES_PATH "/Training/Bouttonground.bin";
@@ -298,8 +312,6 @@ namespace OHOS
     static constexpr const char *PNG_TOGGLEBUTTON_ON_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_ON.bin";              // togglebuttton选中图片
 
     static constexpr const char *PNG_ORANGE_ATTENTION_VECTOR_IMAGE = APP_RES_PATH "/OrangeAttentionVector.bin"; // 橘黄色感叹号图标
-    static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/Record/animator1.bin";
-    static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/Record/animator2.bin";
     /* -------------------------------- 已删除的不必要图片 ------------------------------- */
     static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
     static constexpr const char *PNG_APPLIST_TEMP_IMAGE = APP_RES_PATH "/TEMP_IMAGE.bin";
index e1fe863..09f1d71 100644 (file)
 #include "classicbluetooth/include/ClassicBlueToothPresenter.h"
 #include "classicbluetooth/include/ClassicBlueToothView.h"
 
+#include "record/include/RecordPresenter.h"
+#include "record/include/RecordView.h"
+#include "record/include/RecordListPresenter.h"
+#include "record/include/RecordListView.h"
+#include "record/include/RecordPlayPresenter.h"
+#include "record/include/RecordPlayView.h"
+#include "record/include/RecordDeletePresenter.h"
+#include "record/include/RecordDeleteView.h"
+#include "record/include/RecordGoingPresenter.h"
+#include "record/include/RecordGoingView.h"
+
 #include "BluetoothHeadsetEvent.h"
 #include "graphic_hardware_config.h"
 #include "graphic_service.h"
@@ -154,6 +165,13 @@ namespace OHOS
         {VIEW_FAST_TRAINING, &NativeLauncher::InitFastTrainingSlice},
         {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
 
+        {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
+        {VIEW_RECORD_LIST, &NativeLauncher::InitRecordingListSlice},
+        {VIEW_RECORD_PLAY, &NativeLauncher::InitRecordingPlaySlice},
+        {VIEW_RECORD_DELETE, &NativeLauncher::InitRecordingDeleteSlice},
+        {VIEW_RECORD_DELETE, &NativeLauncher::InitRecordingDeleteSlice},
+        {VIEW_RECORD_GOING, &NativeLauncher::InitRecordingGoingSlice},
+
         {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
         {VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
 #ifdef SUPPORT_ALIPAY_SEC
@@ -613,4 +631,52 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_CLASSIC_BLUETOOTH, classicbluetooth);
     }
 
+    void NativeLauncher::InitRecordingSlice(void) // 录音
+    {
+        SliceProxy *record = new AbilitySliceProxy<RecordView, RecordPresenter>;
+        if (record == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD, record);
+    }
+
+    void NativeLauncher::InitRecordingListSlice(void)
+    {
+        SliceProxy *recordlist = new AbilitySliceProxy<RecordListView, RecordListPresenter>;
+        if (recordlist == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_LIST, recordlist);
+    }
+
+    void NativeLauncher::InitRecordingPlaySlice(void)
+    {
+        SliceProxy *recordplay = new AbilitySliceProxy<RecordPlayView, RecordPlayPresenter>;
+        if (recordplay == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_PLAY, recordplay);
+    }
+    void NativeLauncher::InitRecordingDeleteSlice(void)
+    {
+        SliceProxy *recorddelete = new AbilitySliceProxy<RecordDeleteView, RecordDeletePresenter>;
+        if (recorddelete == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_DELETE, recorddelete);
+    }
+
+    void NativeLauncher::InitRecordingGoingSlice(void) // 正在录音
+    {
+        SliceProxy *recordgoing = new AbilitySliceProxy<RecordGoingView, RecordGoingPresenter>;
+        if (recordgoing == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_GOING, recordgoing);
+    }
 }
index 3dff741..457a9e1 100644 (file)
@@ -25,6 +25,7 @@ namespace OHOS
         {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr},
         {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
         {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, "天气", nullptr},
+        {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, "录音", nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
         {VIEW_ROTATE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, "模拟表冠", nullptr},
 #ifdef SUPPORT_ALIPAY_SEC
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeletePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeletePresenter.h
new file mode 100644 (file)
index 0000000..869e85a
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef RECORD_DELETE_PRESENTER_H\r
+#define RECORD_DELETE_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+\r
+#include "RecordDeleteView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class RecordDeleteView;\r
+\r
+    class RecordDeletePresenter : public Presenter<RecordDeleteView>,\r
+                                  public UIView::OnClickListener,\r
+                                  public UIView::OnDragListener\r
+    {\r
+    public:\r
+        RecordDeletePresenter();\r
+        virtual ~RecordDeletePresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static RecordDeletePresenter *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
+    };\r
+} // namespace OHOS\r
+\r
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeleteView.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordDeleteView.h
new file mode 100644 (file)
index 0000000..e210c41
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef RECORD_DELETE_VIEW_H\r
+#define RECORD_DELETE_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+    static const char *RECORD_DELETE_ON_BUTTON_VIEWID = "RECORD_DELETE_ON_BUTTON";   // 录音删除\r
+    static const char *RECORD_DELETE_OFF_BUTTON_VIEWID = "RECORD_DELETE_OFF_BUTTON"; // 录音不删除\r
+    class RecordDeletePresenter;\r
+    class RecordDeleteView : public View<RecordDeletePresenter>\r
+    {\r
+\r
+    public:\r
+        RecordDeleteView();\r
+        virtual ~RecordDeleteView();\r
+        static RecordDeleteView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UIImageView *RECORD_DELETE_BACKGROUND_IMAGE = nullptr;\r
+        UIButton *RECORD_DELETE_ON_BUTTON = nullptr;  // 是否删除录音:是\r
+        UIButton *RECORD_DELETE_OFF_BUTTON = nullptr; // 是否删除录音:否\r
+\r
+        UIView::OnClickListener *RECORD_DELETE_ON_BUTTON_CLICK{nullptr}; //删除录音按钮点击回调\r
+        UIView::OnClickListener *RECORD_DELETE_OFF_BUTTON_CLICK{nullptr};//不删除录音按钮点击回调\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingPresenter.h
new file mode 100644 (file)
index 0000000..dd4f941
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef RECORD_GOING_PRESENTER_H\r
+#define RECORD_GOING_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+\r
+#include "RecordGoingView.h"\r
+#include "animator/animator.h"\r
+namespace OHOS\r
+{\r
+    class RecordGoingView;\r
+\r
+    class RecordGoingPresenter : public Presenter<RecordGoingView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener\r
+    {\r
+    public:\r
+        RecordGoingPresenter();\r
+        virtual ~RecordGoingPresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static RecordGoingPresenter *GetInstance();\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingView.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordGoingView.h
new file mode 100644 (file)
index 0000000..c88a190
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef RECORD_GOING_VIEW_H\r
+#define RECORD_GOING_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "animator/animator.h"\r
+#include "sys/time.h"\r
+namespace OHOS\r
+{\r
+    static constexpr int16_t TIME_CONVERT = 60; // sec to min, and min to hor\r
+    static constexpr int16_t TEXT_BUFFER_SIEZ = 20;\r
+    class TimerAnimatorCallback : public AnimatorCallback\r
+    {\r
+    public:\r
+        explicit TimerAnimatorCallback(UILabel *label) : label_(label) {}\r
+        ~TimerAnimatorCallback() override {}\r
+        void Callback(UIView *view) override;\r
+\r
+    private:\r
+        UILabel *label_ = nullptr;\r
+    };\r
+\r
+    static const char *RECORD_GOING_BUTTON_VIEWID = "RECORD_GOING_BUTTON"; // 点击按钮后停止录音\r
+    class RecordGoingPresenter;\r
+    class RecordGoingView : public View<RecordGoingPresenter>\r
+    {\r
+\r
+    public:\r
+        RecordGoingView();\r
+        virtual ~RecordGoingView();\r
+        static RecordGoingView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnClickListener *RECORD_GOING_BUTTON_CLICK{nullptr};\r
+\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+\r
+        //有bug\r
+        TimerAnimatorCallback *callBack_ = nullptr;\r
+        Animator *animator_ = nullptr;\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView = nullptr;\r
+        UILabel *RECORD_GOING_LABEL1 = nullptr;\r
+        UIImageView *RECORD_GOING_IMAGE = nullptr;\r
+        UIButton *RECORD_GOING_BUTTON = nullptr;\r
+        UILabel *RECORD_GOING_LABEL2 = nullptr;\r
+        UILabel *RECORD_GOING_LABEL3 = nullptr;\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListPresenter.h
new file mode 100644 (file)
index 0000000..ca33ea8
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef RECORD_LIST_PRESENTER_H\r
+#define RECORD_LIST_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+ \r
+#include "RecordListView.h"\r
+ \r
+namespace OHOS\r
+{\r
+    class RecordListView;\r
+       \r
+    class RecordListPresenter : public Presenter<RecordListView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener,\r
+                                 public UIView::OnLongPressListener\r
+    {\r
+    public:\r
+        RecordListPresenter();\r
+        virtual ~RecordListPresenter();\r
+ \r
+        void OnStart() override;  \r
+        void OnPause() override;  \r
+        void OnResume() override; \r
+        void OnStop() override;   \r
+ \r
+        static RecordListPresenter *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
+        bool OnLongPress(UIView& view, const LongPressEvent& event) override;\r
+    };\r
+} //namespace OHOS\r
+\r
+\r
+\r
+\r
+\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListView.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordListView.h
new file mode 100644 (file)
index 0000000..1869c7f
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef RECORD_LIST_VIEW_H\r
+#define RECORD_LIST_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+    class RecordListPresenter;\r
+    class RecordListView : public View<RecordListPresenter>\r
+    {\r
+\r
+    public:\r
+        RecordListView();\r
+        virtual ~RecordListView();\r
+        static RecordListView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *RecordListScrollView = nullptr;\r
+        UILabel *RecordListlabel1 = nullptr;\r
+        UIImageView *RecordImage = nullptr;\r
+        UIButton *RecordButton = nullptr;\r
+\r
+        UIImageView *image6_ = nullptr;\r
+        UIButton *button3 = nullptr;\r
+        UIButton *button1 = nullptr;\r
+        UILabel *label3 = nullptr;\r
+        UILabel *label2 = nullptr;\r
+        UILabel *label1 = nullptr;\r
+        UIButton *button2 = nullptr;\r
+        UILabel *label9 = nullptr;\r
+        UILabel *label6 = nullptr;\r
+        UILabel *label8 = nullptr;\r
+        UILabel *label5 = nullptr;\r
+        UILabel *label7 = nullptr;\r
+        UILabel *label4 = nullptr;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayPresenter.h
new file mode 100644 (file)
index 0000000..b19a8a5
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef RECORD_PLAY_PRESENTER_H\r
+#define RECORD_PLAY_PRESENTER_H\r
+ \r
+#include "Presenter.h"\r
+ \r
+#include "RecordPlayView.h"\r
+ \r
+namespace OHOS\r
+{\r
+    class RecordPlayView;\r
+       \r
+    class RecordPlayPresenter : public Presenter<RecordPlayView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener\r
+    {\r
+    public:\r
+        RecordPlayPresenter();\r
+        virtual ~RecordPlayPresenter();\r
+ \r
+        void OnStart() override;  \r
+        void OnPause() override;  \r
+        void OnResume() override; \r
+        void OnStop() override;   \r
+ \r
+        static RecordPlayPresenter *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
+    };\r
+} //namespace OHOS\r
+ \r
+ \r
+#endif  //SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayView.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPlayView.h
new file mode 100644 (file)
index 0000000..a580dfc
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef RECORD_PLAY_VIEW_H\r
+#define RECORD_PLAY_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_circle_progress.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+    static const char *RECORD_PLAY_PAUSE_CHECKBOX_VIEWID = "RECORD_PLAY_PAUSE_CHECKBOX";      // 播放和暂停复选框视图id\r
+    static const char *RECORD_PLAY_PROVE_BUTTON_VIEWID = "RECORD_PLAY_PROVE_BUTTON";   // 上一首按钮的视图id\r
+    static const char *RECORD_PLAY_NEXT_BUTTON_VIEWID = "RECORD_PLAY_NEXT_BUTTON";     // 下一首按钮的视图id\r
+    static const char *RECORD_PLAY_DELETE_BUTTON_VIEWID = "RECORD_PLAY_DELETE_BUTTON"; // 删除按钮的视图id\r
+    static const char *RECORD_PLAY_VOLUME_BUTTON_VIEWID = "RECORD_PLAY_VOLUME_BUTTON"; // 音量按钮的视图id\r
+\r
+    class RecordPlayPresenter;\r
+    class RecordPlayView : public View<RecordPlayPresenter>\r
+    {\r
+\r
+    public:\r
+        RecordPlayView();\r
+        virtual ~RecordPlayView();\r
+        static RecordPlayView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+        UIButton *CreateUIButton(int left, int top, int width, int height, const char *viewId,\r
+                                                 const char *defimagesrc, const char *toggleimagesrc, UIView::OnClickListener **buttonClick);\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+        UIView::OnClickListener *RECORD_PLAY_PROVE_BUTTON_CLICK{nullptr};  // 上一首按钮点击回调\r
+        UIView::OnClickListener *RECORD_PLAY_NEXT_BUTTON_CLICK{nullptr};   // 下一首按钮点击回调\r
+        UIView::OnClickListener *RECORD_PLAY_DELETE_BUTTON_CLICK{nullptr}; // 删除按钮的点击回调\r
+        UIView::OnClickListener *RECORD_PLAY_VOLUME_BUTTON_CLICK{nullptr}; // 音量按钮点击回调\r
+\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UIImageView *RECORD_PLAY_BACKGROUND_IMAGE = nullptr;\r
+        UICircleProgress *RECORD_PLAY_CircleProgress = nullptr;\r
+        UICheckBox *RECORD_PLAY_PAUSE_CHECKBOX = nullptr;\r
+        UILabel *RecordLabel1 = nullptr;\r
+        UILabel *RecordLabel2 = nullptr;\r
+        UIButton *RECORD_PLAY_PROVE_BUTTON = nullptr;  // 上一首按钮\r
+        UIButton *RECORD_PLAY_NEXT_BUTTON = nullptr;   // 下一首按钮\r
+        UIButton *RECORD_PLAY_DELETE_BUTTON = nullptr; // 删除按钮\r
+        UIButton *RECORD_PLAY_VOLUME_BUTTON = nullptr; // 音量按钮\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordPresenter.h
new file mode 100644 (file)
index 0000000..a33a43f
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef RECORD_PRESENTER_H\r
+#define RECORD_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+ \r
+#include "RecordView.h"\r
+ \r
+namespace OHOS\r
+{\r
+    class RecordView;\r
+       \r
+    class RecordPresenter : public Presenter<RecordView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener\r
+    {\r
+    public:\r
+        RecordPresenter();\r
+        virtual ~RecordPresenter();\r
+ \r
+        void OnStart() override;  \r
+        void OnPause() override;  \r
+        void OnResume() override; \r
+        void OnStop() override;   \r
+ \r
+        static RecordPresenter *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
+    };\r
+} //namespace OHOS\r
+\r
+\r
+\r
+\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordView.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordView.h
new file mode 100644 (file)
index 0000000..91a26b0
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef RECORD_VIEW_H\r
+#define RECORD_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_image_animator.h"\r
+\r
+namespace OHOS\r
+{\r
+    static const char *RECORD_BUTTON = "RecordButton";  //录音按钮\r
+    class RecordPresenter;\r
+    class RecordView : public View<RecordPresenter>\r
+    {\r
+\r
+    public:\r
+        RecordView();\r
+        virtual ~RecordView();\r
+        static RecordView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView = nullptr;\r
+        UILabel *label1 = nullptr;\r
+        UIImageView *RECORD1_Image = nullptr;\r
+        UIButton *button = nullptr;\r
+        UILabel *label2 = nullptr;\r
+        UIImageAnimatorView *imageAnimator1_ = nullptr;\r
+\r
+        \r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeletePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeletePresenter.cpp
new file mode 100644 (file)
index 0000000..66817e1
--- /dev/null
@@ -0,0 +1,78 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "record/include/RecordDeletePresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static RecordDeletePresenter *g_pRecordDeletePresenter = nullptr;\r
+\r
+    RecordDeletePresenter::RecordDeletePresenter()\r
+    {\r
+\r
+        g_pRecordDeletePresenter = this;\r
+    }\r
+\r
+    RecordDeletePresenter::~RecordDeletePresenter()\r
+    {\r
+\r
+        g_pRecordDeletePresenter = nullptr;\r
+    }\r
+\r
+    RecordDeletePresenter *RecordDeletePresenter::GetInstance()\r
+    {\r
+\r
+        return g_pRecordDeletePresenter;\r
+    }\r
+\r
+    void RecordDeletePresenter::OnStart()\r
+    {\r
+\r
+        Presenter<RecordDeleteView>::OnStart();\r
+    }\r
+\r
+    void RecordDeletePresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<RecordDeleteView>::OnPause();\r
+    }\r
+\r
+    void RecordDeletePresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<RecordDeleteView>::OnResume();\r
+    }\r
+\r
+    void RecordDeletePresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<RecordDeleteView>::OnStop();\r
+    }\r
+\r
+    bool RecordDeletePresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        UNUSED(event);\r
+    }\r
+\r
+    bool RecordDeletePresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        UNUSED(event);\r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("delete button being clicked\n");\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_DELETE_OFF_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("delete not button being clicked\n");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeleteView.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeleteView.cpp
new file mode 100644 (file)
index 0000000..6f1a6ea
--- /dev/null
@@ -0,0 +1,150 @@
+#include "record/include/RecordDeleteView.h"\r
+#include "record/include/RecordDeletePresenter.h"\r
+\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static RecordDeleteView *g_pRecordDeleteView{nullptr};\r
+\r
+    RecordDeleteView::RecordDeleteView()\r
+    {\r
+\r
+        g_pRecordDeleteView = this;\r
+    }\r
+\r
+    RecordDeleteView::~RecordDeleteView()\r
+    {\r
+        DeInitView();\r
+        g_pRecordDeleteView = nullptr;\r
+    }\r
+\r
+    RecordDeleteView *RecordDeleteView::GetInstance()\r
+    {\r
+\r
+        return g_pRecordDeleteView;\r
+    }\r
+\r
+    void RecordDeleteView::InitView()\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+        }\r
+\r
+        // Add ImageView to App\r
+        if (RECORD_DELETE_BACKGROUND_IMAGE == nullptr)\r
+        {\r
+            RECORD_DELETE_BACKGROUND_IMAGE = new UIImageView();\r
+        }\r
+        RECORD_DELETE_BACKGROUND_IMAGE->SetPosition(0, 0);\r
+        RECORD_DELETE_BACKGROUND_IMAGE->Resize(466, 466);\r
+        RECORD_DELETE_BACKGROUND_IMAGE->SetViewId("RECORD_DELETE_BACKGROUND_IMAGE");\r
+        RECORD_DELETE_BACKGROUND_IMAGE->SetSrc(PNG_RECORD_DELETE_BACKGROUND_IMAGE);\r
+\r
+        // Add to rootView\r
+        container_->Add(RECORD_DELETE_BACKGROUND_IMAGE);\r
+        RECORD_DELETE_BACKGROUND_IMAGE->SetVisible(true);\r
+\r
+        // Add Button to App\r
+        if (RECORD_DELETE_ON_BUTTON == nullptr)\r
+        {\r
+            RECORD_DELETE_ON_BUTTON = new UIButton();\r
+        }\r
+        RECORD_DELETE_ON_BUTTON->SetPosition(254, 299);\r
+        RECORD_DELETE_ON_BUTTON->Resize(100, 100);\r
+        RECORD_DELETE_ON_BUTTON->SetViewId(RECORD_DELETE_ON_BUTTON_VIEWID);\r
+        RECORD_DELETE_ON_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        RECORD_DELETE_ON_BUTTON->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
+        RECORD_DELETE_ON_BUTTON->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, nullptr);\r
+        RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BACKGROUND_OPA, 0x2b, UIButton::PRESSED);\r
+        RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        RECORD_DELETE_ON_BUTTON_CLICK = static_cast<UIView::OnClickListener *>(RecordDeletePresenter::GetInstance());\r
+        RECORD_DELETE_ON_BUTTON->SetOnClickListener(RECORD_DELETE_ON_BUTTON_CLICK);\r
+        // Add to rootView\r
+        container_->Add(RECORD_DELETE_ON_BUTTON);\r
+        RECORD_DELETE_ON_BUTTON->SetVisible(true);\r
+\r
+        // Add Button to App\r
+        if (RECORD_DELETE_OFF_BUTTON == nullptr)\r
+        {\r
+            RECORD_DELETE_OFF_BUTTON = new UIButton();\r
+        }\r
+        RECORD_DELETE_OFF_BUTTON->SetPosition(111, 299);\r
+        RECORD_DELETE_OFF_BUTTON->Resize(100, 100);\r
+        RECORD_DELETE_OFF_BUTTON->SetViewId(RECORD_DELETE_OFF_BUTTON_VIEWID);\r
+        RECORD_DELETE_OFF_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        RECORD_DELETE_OFF_BUTTON->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
+        RECORD_DELETE_OFF_BUTTON->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, nullptr);\r
+        RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BACKGROUND_OPA, 0x2b, UIButton::PRESSED);\r
+        RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        RECORD_DELETE_OFF_BUTTON_CLICK = static_cast<UIView::OnClickListener *>(RecordDeletePresenter::GetInstance());\r
+        RECORD_DELETE_OFF_BUTTON->SetOnClickListener(RECORD_DELETE_OFF_BUTTON_CLICK);\r
+        // Add to rootView\r
+        container_->Add(RECORD_DELETE_OFF_BUTTON);\r
+        RECORD_DELETE_OFF_BUTTON->SetVisible(true);\r
+    }\r
+\r
+    void RecordDeleteView::DeInitView()\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+        }\r
+        if (RECORD_DELETE_BACKGROUND_IMAGE != nullptr)\r
+        {\r
+            delete RECORD_DELETE_BACKGROUND_IMAGE;\r
+            RECORD_DELETE_BACKGROUND_IMAGE = nullptr;\r
+        }\r
+        if (RECORD_DELETE_ON_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_DELETE_ON_BUTTON;\r
+            RECORD_DELETE_ON_BUTTON = nullptr;\r
+        }\r
+        if (RECORD_DELETE_OFF_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_DELETE_OFF_BUTTON;\r
+            RECORD_DELETE_OFF_BUTTON = nullptr;\r
+        }\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+\r
+    void RecordDeleteView::OnStart()\r
+    {\r
+        View<RecordDeletePresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void RecordDeleteView::OnSetUpView()\r
+    {\r
+\r
+        View<RecordDeletePresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void RecordDeleteView::OnTearDownView()\r
+    {\r
+\r
+        View<RecordDeletePresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void RecordDeleteView::OnStop()\r
+    {\r
+\r
+        View<RecordDeletePresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingPresenter.cpp
new file mode 100644 (file)
index 0000000..b92f769
--- /dev/null
@@ -0,0 +1,71 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "string.h"\r
+#include "record/include/RecordGoingPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static RecordGoingPresenter *g_pRecordGoingPresenter = nullptr;\r
+\r
+    RecordGoingPresenter::RecordGoingPresenter()\r
+    {\r
+\r
+        g_pRecordGoingPresenter = this;\r
+    }\r
+\r
+    RecordGoingPresenter::~RecordGoingPresenter()\r
+    {\r
+\r
+        g_pRecordGoingPresenter = nullptr;\r
+    }\r
+\r
+    RecordGoingPresenter *RecordGoingPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pRecordGoingPresenter;\r
+    }\r
+\r
+    void RecordGoingPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<RecordGoingView>::OnStart();\r
+    }\r
+\r
+    void RecordGoingPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<RecordGoingView>::OnPause();\r
+    }\r
+\r
+    void RecordGoingPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<RecordGoingView>::OnResume();\r
+    }\r
+\r
+    void RecordGoingPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<RecordGoingView>::OnStop();\r
+    }\r
+\r
+    bool RecordGoingPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(view);\r
+        UNUSED(event);\r
+    }\r
+\r
+    bool RecordGoingPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+\r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        if (strcmp(view.GetViewId(), RECORD_GOING_BUTTON_VIEWID) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD);\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingView.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordGoingView.cpp
new file mode 100644 (file)
index 0000000..f5c4375
--- /dev/null
@@ -0,0 +1,246 @@
+#include "record/include/RecordGoingView.h"\r
+#include "record/include/RecordGoingPresenter.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static RecordGoingView *g_pRecordGoingView{nullptr};\r
+\r
+    RecordGoingView::RecordGoingView()\r
+    {\r
+\r
+        g_pRecordGoingView = this;\r
+    }\r
+\r
+    RecordGoingView::~RecordGoingView()\r
+    {\r
+        DeInitView();\r
+        g_pRecordGoingView = nullptr;\r
+    }\r
+\r
+    RecordGoingView *RecordGoingView::GetInstance()\r
+    {\r
+\r
+        return g_pRecordGoingView;\r
+    }\r
+    static void GetTime(char *buf, int len)\r
+    {\r
+        struct timeval tv;\r
+        gettimeofday(&tv, NULL);\r
+        uint32_t second = tv.tv_sec % TIME_CONVERT;\r
+        uint32_t minute = tv.tv_sec / TIME_CONVERT;\r
+        uint32_t hour = (minute / TIME_CONVERT) % 24; // 24: 24 hours per day\r
+        // uint32_t realMilliSecond = tv.tv_usec / USEC_TO_MILLI;\r
+        minute = minute % TIME_CONVERT;\r
+        snprintf(buf, len, "%02d : %02d : %02d", hour, minute, second);\r
+        // sprintf_s(buf, len, "%02d : %02d : %02d", hour, minute, second);\r
+    }\r
+\r
+    void TimerAnimatorCallback::Callback(UIView *view)\r
+    {\r
+        (void)view;\r
+        char buf[TEXT_BUFFER_SIEZ] = {0};\r
+        GetTime(buf, TEXT_BUFFER_SIEZ);\r
+        label_->SetText(buf);\r
+        RootView::GetInstance()->Invalidate();\r
+    }\r
+\r
+    void RecordGoingView::InitView()\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            container_->SetTouchable(true);\r
+        }\r
+        if (scrollView == nullptr)\r
+        {\r
+            scrollView = new UIScrollView();\r
+        }\r
+        scrollView->SetPosition(0, 0);\r
+        scrollView->Resize(466, 466);\r
+        scrollView->SetViewId("scrollView");\r
+        scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        // Add to rootView\r
+        container_->Add(scrollView);\r
+        scrollView->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (RECORD_GOING_LABEL1 == nullptr)\r
+        {\r
+            RECORD_GOING_LABEL1 = new UILabel();\r
+        }\r
+        RECORD_GOING_LABEL1->SetPosition(188, 52);\r
+        RECORD_GOING_LABEL1->Resize(90, 35);\r
+        RECORD_GOING_LABEL1->SetViewId("RECORD_GOING_LABEL1");\r
+        RECORD_GOING_LABEL1->SetStyle(STYLE_TEXT_FONT, 30);\r
+        RECORD_GOING_LABEL1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        RECORD_GOING_LABEL1->SetText("录音机");\r
+        RECORD_GOING_LABEL1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RECORD_GOING_LABEL1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RECORD_GOING_LABEL1->SetRollSpeed(0);\r
+        RECORD_GOING_LABEL1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to rootView\r
+        scrollView->Add(RECORD_GOING_LABEL1);\r
+        RECORD_GOING_LABEL1->SetVisible(true);\r
+\r
+        // Add ImageView to App\r
+        if (RECORD_GOING_IMAGE == nullptr)\r
+        {\r
+            RECORD_GOING_IMAGE = new UIImageView();\r
+        }\r
+        RECORD_GOING_IMAGE->SetPosition(158, 129);\r
+        RECORD_GOING_IMAGE->Resize(150, 150);\r
+        RECORD_GOING_IMAGE->SetViewId("RECORD_GOING_IMAGE");\r
+        RECORD_GOING_IMAGE->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        RECORD_GOING_IMAGE->SetStyle(STYLE_BORDER_RADIUS, 15);\r
+        RECORD_GOING_IMAGE->SetSrc(PNG_RECORD3_IMAGE);\r
+\r
+        // Add to rootView\r
+        scrollView->Add(RECORD_GOING_IMAGE);\r
+        RECORD_GOING_IMAGE->SetVisible(true);\r
+\r
+        // Add Button to App\r
+        if (RECORD_GOING_BUTTON == nullptr)\r
+        {\r
+            RECORD_GOING_BUTTON = new UIButton();\r
+        }\r
+        RECORD_GOING_BUTTON->SetPosition(210, 180);\r
+        RECORD_GOING_BUTTON->Resize(60, 60);\r
+        RECORD_GOING_BUTTON->SetViewId(RECORD_GOING_BUTTON_VIEWID);\r
+        RECORD_GOING_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff5a36);\r
+        RECORD_GOING_BUTTON->SetStyle(STYLE_BORDER_RADIUS, 20);\r
+\r
+        // Set additional property\r
+        RECORD_GOING_BUTTON->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        RECORD_GOING_BUTTON->SetStyleForState(STYLE_BORDER_RADIUS, 20, UIButton::PRESSED);\r
+        // Add the CallBack about events\r
+        RECORD_GOING_BUTTON_CLICK = static_cast<UIView::OnClickListener *>(RecordGoingPresenter::GetInstance());\r
+        RECORD_GOING_BUTTON->SetOnClickListener(RECORD_GOING_BUTTON_CLICK);\r
+        // Add to rootView\r
+        scrollView->Add(RECORD_GOING_BUTTON);\r
+        RECORD_GOING_BUTTON->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (RECORD_GOING_LABEL2 == nullptr)\r
+        {\r
+            RECORD_GOING_LABEL2 = new UILabel();\r
+        }\r
+        RECORD_GOING_LABEL2->SetPosition(107, 290);\r
+        RECORD_GOING_LABEL2->Resize(253, 77);\r
+        RECORD_GOING_LABEL2->SetViewId("RECORD_GOING_LABEL2");\r
+        RECORD_GOING_LABEL2->SetStyle(STYLE_TEXT_FONT, 65);\r
+        RECORD_GOING_LABEL2->SetStyle(STYLE_LINE_HEIGHT, 77);\r
+\r
+        // Set additional property\r
+        RECORD_GOING_LABEL2->SetText("00:00:00");\r
+        RECORD_GOING_LABEL2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RECORD_GOING_LABEL2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RECORD_GOING_LABEL2->SetRollSpeed(0);\r
+        RECORD_GOING_LABEL2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 65);\r
+\r
+        callBack_ = new TimerAnimatorCallback(RECORD_GOING_LABEL2);\r
+        animator_ = new Animator(callBack_, RECORD_GOING_LABEL2, 0, true);\r
+        animator_->Start();\r
+        // Add to rootView\r
+        container_->Add(RECORD_GOING_LABEL2);\r
+        RECORD_GOING_LABEL2->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (RECORD_GOING_LABEL3 == nullptr)\r
+        {\r
+            RECORD_GOING_LABEL3 = new UILabel();\r
+        }\r
+        RECORD_GOING_LABEL3->SetPosition(188, 370);\r
+        RECORD_GOING_LABEL3->Resize(90, 95);\r
+        RECORD_GOING_LABEL3->SetViewId("RECORD_GOING_LABEL3");\r
+        RECORD_GOING_LABEL3->SetStyle(STYLE_TEXT_FONT, 30);\r
+        RECORD_GOING_LABEL3->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        RECORD_GOING_LABEL3->SetText("录音中");\r
+        RECORD_GOING_LABEL3->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RECORD_GOING_LABEL3->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RECORD_GOING_LABEL3->SetRollSpeed(0);\r
+        RECORD_GOING_LABEL3->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to rootView\r
+        scrollView->Add(RECORD_GOING_LABEL3);\r
+        RECORD_GOING_LABEL3->SetVisible(true);\r
+    }\r
+\r
+    void RecordGoingView::DeInitView()\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+        }\r
+        if (scrollView != nullptr)\r
+        {\r
+            scrollView->RemoveAll();\r
+            delete scrollView;\r
+            scrollView = nullptr;\r
+        }\r
+        if (RECORD_GOING_LABEL1 != nullptr)\r
+        {\r
+            delete RECORD_GOING_LABEL1;\r
+            RECORD_GOING_LABEL1 = nullptr;\r
+        }\r
+        if (RECORD_GOING_IMAGE != nullptr)\r
+        {\r
+            delete RECORD_GOING_IMAGE;\r
+            RECORD_GOING_IMAGE = nullptr;\r
+        }\r
+        if (RECORD_GOING_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_GOING_BUTTON;\r
+            RECORD_GOING_BUTTON = nullptr;\r
+        }\r
+        if (RECORD_GOING_LABEL2 != nullptr)\r
+        {\r
+            delete RECORD_GOING_LABEL2;\r
+            RECORD_GOING_LABEL2 = nullptr;\r
+        }\r
+        if (RECORD_GOING_LABEL3 != nullptr)\r
+        {\r
+            delete RECORD_GOING_LABEL3;\r
+            RECORD_GOING_LABEL3 = nullptr;\r
+        }\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+\r
+    void RecordGoingView::OnStart()\r
+    {\r
+        View<RecordGoingPresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void RecordGoingView::OnSetUpView()\r
+    {\r
+        View<RecordGoingPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void RecordGoingView::OnTearDownView()\r
+    {\r
+\r
+        View<RecordGoingPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void RecordGoingView::OnStop()\r
+    {\r
+        animator_->Stop();\r
+        View<RecordGoingPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListPresenter.cpp
new file mode 100644 (file)
index 0000000..a009e80
--- /dev/null
@@ -0,0 +1,91 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "record/include/RecordListPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static RecordListPresenter *g_pRecordListPresenter = nullptr;\r
+\r
+    RecordListPresenter::RecordListPresenter()\r
+    {\r
+\r
+        g_pRecordListPresenter = this;\r
+    }\r
+\r
+    RecordListPresenter::~RecordListPresenter()\r
+    {\r
+\r
+        g_pRecordListPresenter = nullptr;\r
+    }\r
+\r
+    RecordListPresenter *RecordListPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pRecordListPresenter;\r
+    }\r
+\r
+    void RecordListPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<RecordListView>::OnStart();\r
+    }\r
+\r
+    void RecordListPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<RecordListView>::OnPause();\r
+    }\r
+\r
+    void RecordListPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<RecordListView>::OnResume();\r
+    }\r
+\r
+    void RecordListPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<RecordListView>::OnStop();\r
+    }\r
+\r
+    bool RecordListPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM &&\r
+            (event.GetDeltaY() > 30) && (event.GetDeltaY() > (2 * MATH_ABS(event.GetDeltaX()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool RecordListPresenter::OnLongPress(UIView &view, const LongPressEvent &event)\r
+    {\r
+\r
+        return false;\r
+    }\r
+\r
+    bool RecordListPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        if (strcmp(view.GetViewId(), "button1") == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            return true;\r
+        }\r
+        else if(strcmp(view.GetViewId(), "button2") == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            return true;\r
+        }\r
+        else if(strcmp(view.GetViewId(), "button3") == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            return true;\r
+        }\r
+        return true;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp
new file mode 100644 (file)
index 0000000..1eb2c5c
--- /dev/null
@@ -0,0 +1,526 @@
+#include "record/include/RecordListView.h"\r
+#include "record/include/RecordListPresenter.h"\r
+\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static RecordListView *g_pRecordListView{nullptr};\r
+\r
+    RecordListView::RecordListView()\r
+    {\r
+\r
+        g_pRecordListView = this;\r
+    }\r
+\r
+    RecordListView::~RecordListView()\r
+    {\r
+        g_pRecordListView = nullptr;\r
+    }\r
+\r
+    RecordListView *RecordListView::GetInstance()\r
+    {\r
+\r
+        return g_pRecordListView;\r
+    }\r
+\r
+    void RecordListView::InitView()\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            draglistener = static_cast<UIView::OnDragListener *>(RecordListPresenter::GetInstance());\r
+            if (draglistener == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            container_->SetOnDragListener(draglistener);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+        }\r
+\r
+        // Add ScrollView to App\r
+        if (RecordListScrollView == nullptr)\r
+        {\r
+            RecordListScrollView = new UIScrollView();\r
+        }\r
+        RecordListScrollView->SetPosition(0, 0);\r
+        RecordListScrollView->Resize(466, 466);\r
+        RecordListScrollView->SetViewId("RecordListScrollView");\r
+        RecordListScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        // Add to rootView\r
+        container_->Add(RecordListScrollView);\r
+        RecordListScrollView->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (RecordListlabel1 == nullptr)\r
+        {\r
+            RecordListlabel1 = new UILabel();\r
+        }\r
+        RecordListlabel1->SetPosition(188, 52);\r
+        RecordListlabel1->Resize(90, 35);\r
+        RecordListlabel1->SetViewId("RecordListlabel1");\r
+        RecordListlabel1->SetStyle(STYLE_TEXT_FONT, 30);\r
+        RecordListlabel1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        RecordListlabel1->SetText("录音机");\r
+        RecordListlabel1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RecordListlabel1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RecordListlabel1->SetRollSpeed(0);\r
+        RecordListlabel1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(RecordListlabel1);\r
+        RecordListlabel1->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add ImageView to App\r
+        if (RecordImage == nullptr)\r
+        {\r
+            RecordImage = new UIImageView();\r
+        }\r
+        RecordImage->SetPosition(158, 129);\r
+        RecordImage->Resize(150, 150);\r
+        RecordImage->SetViewId("RecordImage");\r
+        RecordImage->SetStyle(STYLE_BORDER_RADIUS, 10);\r
+        RecordImage->SetSrc(PNG_RECORD1_IMAGE);\r
+\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(RecordImage);\r
+        RecordImage->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (RecordButton == nullptr)\r
+        {\r
+            RecordButton = new UIButton();\r
+        }\r
+        RecordButton->SetPosition(178, 150);\r
+        RecordButton->Resize(120, 120);\r
+        RecordButton->SetViewId("RecordButton");\r
+        RecordButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff5a36);\r
+        RecordButton->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+\r
+        // Set additional property\r
+        RecordButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffff5a36, UIButton::PRESSED);\r
+        RecordButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        RecordButton->SetStyleForState(STYLE_BORDER_RADIUS, 100, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *button4Click = static_cast<UIView::OnClickListener *>(RecordListPresenter::GetInstance());\r
+        RecordButton->SetOnClickListener(button4Click);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(RecordButton);\r
+        RecordButton->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (button1 == nullptr)\r
+        {\r
+            button1 = new UIButton();\r
+        }\r
+        button1->SetPosition(43, 323);\r
+        button1->Resize(380, 100);\r
+        button1->SetViewId("button1");\r
+        button1->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        button1->SetStyle(STYLE_BORDER_RADIUS, 50);\r
+        button1->SetImageSrc(PNG_SETTING_BACKGROUND_IMAGE, nullptr);\r
+        button1->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        button1->SetStyleForState(STYLE_BACKGROUND_OPA, 0x82, UIButton::PRESSED);\r
+        button1->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        button1->SetStyleForState(STYLE_BORDER_RADIUS, 50, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(RecordListPresenter::GetInstance());\r
+        button1->SetOnClickListener(button1Click);\r
+        UIView::OnLongPressListener *button1LongPress = static_cast<UIView::OnLongPressListener *>(RecordListPresenter::GetInstance());\r
+        button1->SetOnLongPressListener(button1LongPress);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(button1);\r
+        button1->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label1 == nullptr)\r
+        {\r
+            label1 = new UILabel();\r
+        }\r
+        label1->SetPosition(88, 356);\r
+        label1->Resize(200, 60);\r
+        label1->SetViewId("label1");\r
+        label1->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label1->SetText("录音 3");\r
+        label1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label1->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\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
+        RecordListScrollView->Add(label1);\r
+        label1->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label2 == nullptr)\r
+        {\r
+            label2 = new UILabel();\r
+        }\r
+        label2->SetPosition(301, 342); // widget's left position and top position\r
+        label2->Resize(200, 60);       // 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
+\r
+        // Set additional property\r
+        label2->SetText("20:57");\r
+        label2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label2->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\r
+        label2->SetAlign(TEXT_ALIGNMENT_RIGHT, TEXT_ALIGNMENT_CENTER);\r
+        label2->SetRollSpeed(0);\r
+        label2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label2);\r
+        label2->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label3 == nullptr)\r
+        {\r
+            label3 = new UILabel();\r
+        }\r
+        label3->SetPosition(280, 380); // 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, 20);\r
+        label3->SetStyle(STYLE_LINE_HEIGHT, 23);\r
+\r
+        // Set additional property\r
+        label3->SetText("2022.04.21");\r
+        label3->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label3->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+        label3->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label3->SetRollSpeed(0);\r
+        label3->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label3);\r
+        label3->SetVisible(true);\r
+\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (button2 == nullptr)\r
+        {\r
+            button2 = new UIButton();\r
+        }\r
+        button2->SetPosition(43, 443); // widget's left position and top position\r
+        button2->Resize(380, 100);     // widget's width and height\r
+        button2->SetViewId("button2"); // Set style\r
+        button2->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        button2->SetImageSrc(PNG_SETTING_BACKGROUND_IMAGE, nullptr);\r
+        button2->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        button2->SetStyleForState(STYLE_BACKGROUND_OPA, 0x82, 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 *>(RecordListPresenter::GetInstance());\r
+        button2->SetOnClickListener(button2Click);\r
+        UIView::OnLongPressListener *button2LongPress = static_cast<UIView::OnLongPressListener *>(RecordListPresenter::GetInstance());\r
+        button2->SetOnLongPressListener(button2LongPress);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(button2);\r
+        button2->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label4 == nullptr)\r
+        {\r
+            label4 = new UILabel();\r
+        }\r
+        label4->SetPosition(88, 480);\r
+        label4->Resize(200, 60);\r
+        label4->SetViewId("label4");\r
+        label4->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label4->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label4->SetText("录音 2");\r
+        label4->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label4->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\r
+        label4->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label4->SetRollSpeed(0);\r
+        label4->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label4);\r
+        label4->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label5 == nullptr)\r
+        {\r
+            label5 = new UILabel();\r
+        }\r
+        label5->SetPosition(301, 462);\r
+        label5->Resize(200, 60);\r
+        label5->SetViewId("label5");\r
+        label5->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label5->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label5->SetText("09:51");\r
+        label5->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label5->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\r
+        label5->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label5->SetRollSpeed(0);\r
+        label5->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label5);\r
+        label5->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label6 == nullptr)\r
+        {\r
+            label6 = new UILabel();\r
+        }\r
+        label6->SetPosition(280, 500);\r
+        label6->Resize(200, 60);\r
+        label6->SetViewId("label6");\r
+        label6->SetStyle(STYLE_TEXT_FONT, 20);\r
+        label6->SetStyle(STYLE_LINE_HEIGHT, 23);\r
+\r
+        // Set additional property\r
+        label6->SetText("2023.05.20");\r
+        label6->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label6->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+        label6->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label6->SetRollSpeed(0);\r
+        label6->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label6);\r
+        label6->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (button3 == nullptr)\r
+        {\r
+            button3 = new UIButton();\r
+        }\r
+        button3->SetPosition(43, 563); // widget's left position and top position\r
+        button3->Resize(380, 100);     // widget's width and height\r
+        button3->SetViewId("button3"); // Set style\r
+        button3->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        button3->SetImageSrc(PNG_SETTING_BACKGROUND_IMAGE, nullptr);\r
+        button3->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        button3->SetStyleForState(STYLE_BACKGROUND_OPA, 0x82, UIButton::PRESSED);\r
+        button3->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *button3Click = static_cast<UIView::OnClickListener *>(RecordListPresenter::GetInstance());\r
+        button3->SetOnClickListener(button3Click);\r
+        UIView::OnLongPressListener *button3LongPress = static_cast<UIView::OnLongPressListener *>(RecordListPresenter::GetInstance());\r
+        button3->SetOnLongPressListener(button3LongPress);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(button3);\r
+        button3->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label7 == nullptr)\r
+        {\r
+            label7 = new UILabel();\r
+        }\r
+        label7->SetPosition(88, 596); // widget's left position and top position\r
+        label7->Resize(200, 60);      // widget's width and height\r
+        label7->SetViewId("label7");  // Set style\r
+        label7->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label7->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        label7->SetText("录音 1");\r
+        label7->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label7->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\r
+        label7->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label7->SetRollSpeed(0);\r
+        label7->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label7);\r
+        label7->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label8 == nullptr)\r
+        {\r
+            label8 = new UILabel();\r
+        }\r
+        label8->SetPosition(301, 582); // widget's left position and top position\r
+        label8->Resize(200, 60);       // widget's width and height\r
+        label8->SetViewId("label8");   // Set style\r
+        label8->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label8->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label8->SetText("12:33");\r
+        label8->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label8->SetTextColor(Color::GetColorFromRGBA(0xcc, 0xcc, 0xcc, 0xff));\r
+        label8->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label8->SetRollSpeed(0);\r
+        label8->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label8);\r
+        label8->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (label9 == nullptr)\r
+        {\r
+            label9 = new UILabel();\r
+        }\r
+        label9->SetPosition(280, 620); // widget's left position and top position\r
+        label9->Resize(200, 60);       // widget's width and height\r
+        label9->SetViewId("label9");   // Set style\r
+        label9->SetStyle(STYLE_TEXT_FONT, 20);\r
+        label9->SetStyle(STYLE_LINE_HEIGHT, 23);\r
+        // Set additional property\r
+        label9->SetText("2022.04.21");\r
+        label9->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label9->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+        label9->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label9->SetRollSpeed(0);\r
+        label9->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(label9);\r
+        label9->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add ImageView to App\r
+        if (image6_ == nullptr)\r
+        {\r
+            image6_ = new UIImageView();\r
+        }\r
+        image6_->SetPosition(183, 632); // widget's left position and top position\r
+        image6_->Resize(100, 100);      // widget's width and height\r
+        image6_->SetViewId("image6");   // Set style\r
+\r
+        // Set additional property\r
+\r
+        // Add to scrollView1\r
+        RecordListScrollView->Add(image6_);\r
+        image6_->SetVisible(true);\r
+    }\r
+\r
+    void RecordListView::DeInitView()\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+        }\r
+        if (RecordListScrollView != nullptr)\r
+        {\r
+            delete RecordListScrollView;\r
+            RecordListScrollView = nullptr;\r
+        }\r
+        if (RecordListlabel1 != nullptr)\r
+        {\r
+            delete RecordListlabel1;\r
+            RecordListlabel1 = nullptr;\r
+        }\r
+        if (RecordImage != nullptr)\r
+        {\r
+            delete RecordImage;\r
+            RecordImage = nullptr;\r
+        }\r
+        if (RecordButton != nullptr)\r
+        {\r
+            delete RecordButton;\r
+            RecordButton = nullptr;\r
+        }\r
+        if (image6_ != nullptr)\r
+        {\r
+            delete image6_;\r
+            image6_ = nullptr;\r
+        }\r
+        if (button3 != nullptr)\r
+        {\r
+            delete button3;\r
+            button3 = nullptr;\r
+        }\r
+        if (button1 != nullptr)\r
+        {\r
+            delete button1;\r
+            button1 = nullptr;\r
+        }\r
+        if (label3 != nullptr)\r
+        {\r
+            delete label3;\r
+            label3 = nullptr;\r
+        }\r
+        if (label2 != nullptr)\r
+        {\r
+            delete label2;\r
+            label2 = nullptr;\r
+        }\r
+        if (label1 != nullptr)\r
+        {\r
+            delete label1;\r
+            label1 = nullptr;\r
+        }\r
+        if (button2 != nullptr)\r
+        {\r
+            delete button2;\r
+            button2 = nullptr;\r
+        }\r
+        if (label9 != nullptr)\r
+        {\r
+            delete label9;\r
+            label9 = nullptr;\r
+        }\r
+        if (label6 != nullptr)\r
+        {\r
+            delete label6;\r
+            label6 = nullptr;\r
+        }\r
+        if (label8 != nullptr)\r
+        {\r
+            delete label8;\r
+            label8 = nullptr;\r
+        }\r
+        if (label5 != nullptr)\r
+        {\r
+            delete label5;\r
+            label5 = nullptr;\r
+        }\r
+        if (label7 != nullptr)\r
+        {\r
+            delete label7;\r
+            label7 = nullptr;\r
+        }\r
+        if (label4 != nullptr)\r
+        {\r
+            delete label4;\r
+            label4 = nullptr;\r
+        }\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+\r
+    void RecordListView::OnStart()\r
+    {\r
+        View<RecordListPresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void RecordListView::OnSetUpView()\r
+    {\r
+\r
+        View<RecordListPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void RecordListView::OnTearDownView()\r
+    {\r
+\r
+        View<RecordListPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void RecordListView::OnStop()\r
+    {\r
+\r
+        View<RecordListPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayPresenter.cpp
new file mode 100644 (file)
index 0000000..67a076c
--- /dev/null
@@ -0,0 +1,100 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "record/include/RecordPlayPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static RecordPlayPresenter *g_pRecordPlayPresenter = nullptr;\r
+\r
+    RecordPlayPresenter::RecordPlayPresenter()\r
+    {\r
+\r
+        g_pRecordPlayPresenter = this;\r
+    }\r
+\r
+    RecordPlayPresenter::~RecordPlayPresenter()\r
+    {\r
+\r
+        g_pRecordPlayPresenter = nullptr;\r
+    }\r
+\r
+    RecordPlayPresenter *RecordPlayPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pRecordPlayPresenter;\r
+    }\r
+\r
+    void RecordPlayPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<RecordPlayView>::OnStart();\r
+    }\r
+\r
+    void RecordPlayPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<RecordPlayView>::OnPause();\r
+    }\r
+\r
+    void RecordPlayPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<RecordPlayView>::OnResume();\r
+    }\r
+\r
+    void RecordPlayPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<RecordPlayView>::OnStop();\r
+    }\r
+\r
+    bool RecordPlayPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 30) && (event.GetDeltaX() > (3 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_LIST);\r
+            return true;\r
+        }\r
+    }\r
+\r
+    bool RecordPlayPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+\r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        if (strcmp(view.GetViewId(), RECORD_PLAY_PAUSE_CHECKBOX_VIEWID) == 0)\r
+        {\r
+            printf("play or pause checkbox being clicked\n");\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_PROVE_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("prove button being clicked\n");\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_NEXT_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("next button being clicked\n");\r
+\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_DELETE_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("delete button being clicked\n");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_DELETE);\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_VOLUME_BUTTON_VIEWID) == 0)\r
+        {\r
+            printf("volume button being clicked\n");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
+            return true;\r
+        }\r
+        return true;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayView.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPlayView.cpp
new file mode 100644 (file)
index 0000000..8f086fb
--- /dev/null
@@ -0,0 +1,320 @@
+#include "record/include/RecordPlayView.h"\r
+#include "record/include/RecordPlayPresenter.h"\r
+\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static RecordPlayView *g_pRecordPlayView{nullptr};\r
+\r
+    RecordPlayView::RecordPlayView()\r
+    {\r
+\r
+        g_pRecordPlayView = this;\r
+    }\r
+\r
+    RecordPlayView::~RecordPlayView()\r
+    {\r
+        DeInitView();\r
+        g_pRecordPlayView = nullptr;\r
+    }\r
+\r
+    RecordPlayView *RecordPlayView::GetInstance()\r
+    {\r
+\r
+        return g_pRecordPlayView;\r
+    }\r
+    // 按钮初始化\r
+    UIButton *RecordPlayView::CreateUIButton(int left, int top, int width, int height, const char *viewId,\r
+                                             const char *defimagesrc, const char *toggleimagesrc, UIView::OnClickListener **buttonClick)\r
+    {\r
+        UIButton *button = new UIButton();\r
+        if (button == nullptr)\r
+            return nullptr;\r
+        button->SetPosition(left, top);\r
+        button->Resize(width, height);\r
+        button->SetViewId(viewId);\r
+        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        button->SetStyle(STYLE_BORDER_OPA, 0x00);\r
+        button->SetStyle(STYLE_BORDER_RADIUS, 0);\r
+        button->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
+\r
+        button->SetImageSrc(defimagesrc, toggleimagesrc);\r
+        button->SetStyle(STYLE_BORDER_COLOR, 0x191919);\r
+        button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        *buttonClick = static_cast<UIView::OnClickListener *>(RecordPlayPresenter::GetInstance());\r
+        button->SetOnClickListener(*buttonClick);\r
+        return button;\r
+    }\r
+\r
+    void RecordPlayView::InitView()\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            draglistener = static_cast<UIView::OnDragListener *>(RecordPlayPresenter::GetInstance());\r
+            if (draglistener == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            container_->SetOnDragListener(draglistener);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+        }\r
+\r
+        // Add ImageView to App\r
+        if (RECORD_PLAY_BACKGROUND_IMAGE == nullptr)\r
+        {\r
+            RECORD_PLAY_BACKGROUND_IMAGE = new UIImageView();\r
+        }\r
+        RECORD_PLAY_BACKGROUND_IMAGE->SetPosition(0, 0);\r
+        RECORD_PLAY_BACKGROUND_IMAGE->Resize(466, 466);\r
+        RECORD_PLAY_BACKGROUND_IMAGE->SetViewId("RECORD_PLAY_BACKGROUND_IMAGE");\r
+        RECORD_PLAY_BACKGROUND_IMAGE->SetSrc(PNG_RECORD_PLAY_BACKGROUND_IMAGE);\r
+\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_BACKGROUND_IMAGE);\r
+        RECORD_PLAY_BACKGROUND_IMAGE->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (RecordLabel1 == nullptr)\r
+        {\r
+            RecordLabel1 = new UILabel();\r
+        }\r
+        RecordLabel1->SetPosition(187, 52);\r
+        RecordLabel1->Resize(92, 41);\r
+        RecordLabel1->SetViewId("RecordLabel1");\r
+        RecordLabel1->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        RecordLabel1->SetStyle(STYLE_TEXT_FONT, 35);\r
+        RecordLabel1->SetStyle(STYLE_LINE_HEIGHT, 41);\r
+\r
+        // Set additional property\r
+        RecordLabel1->SetText("录音3");\r
+        RecordLabel1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RecordLabel1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RecordLabel1->SetRollSpeed(0);\r
+        RecordLabel1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
+\r
+        // Add to rootView\r
+        container_->Add(RecordLabel1);\r
+        RecordLabel1->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Label to App\r
+        if (RecordLabel2 == nullptr)\r
+        {\r
+            RecordLabel2 = new UILabel();\r
+        }\r
+        RecordLabel2->SetPosition(122, 102);\r
+        RecordLabel2->Resize(222, 33);\r
+        RecordLabel2->SetViewId("RecordLabel2");\r
+        RecordLabel2->SetStyle(STYLE_TEXT_FONT, 28);\r
+        RecordLabel2->SetStyle(STYLE_LINE_HEIGHT, 33);\r
+\r
+        // Set additional property\r
+        RecordLabel2->SetText("2022.04.21 -20:57");\r
+        RecordLabel2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RecordLabel2->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+        RecordLabel2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RecordLabel2->SetRollSpeed(0);\r
+        RecordLabel2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);\r
+\r
+        // Add to rootView\r
+        container_->Add(RecordLabel2);\r
+        RecordLabel2->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add CircleProgress to App\r
+        if (RECORD_PLAY_CircleProgress == nullptr)\r
+        {\r
+            RECORD_PLAY_CircleProgress = new UICircleProgress();\r
+        }\r
+        RECORD_PLAY_CircleProgress->SetPosition(173, 173);\r
+        RECORD_PLAY_CircleProgress->Resize(120, 120);\r
+        RECORD_PLAY_CircleProgress->SetViewId("RECORD_PLAY_CircleProgress");\r
+        RECORD_PLAY_CircleProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x2b);\r
+        RECORD_PLAY_CircleProgress->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);\r
+        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
+        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6);\r
+        RECORD_PLAY_CircleProgress->SetCenterPosition(60, 60);\r
+        RECORD_PLAY_CircleProgress->SetRadius(60);\r
+        RECORD_PLAY_CircleProgress->SetEndAngle(359);\r
+        RECORD_PLAY_CircleProgress->SetValue(20);\r
+\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_CircleProgress);\r
+        RECORD_PLAY_CircleProgress->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add CheckBox to App\r
+        if (RECORD_PLAY_PAUSE_CHECKBOX == nullptr)\r
+        {\r
+            RECORD_PLAY_PAUSE_CHECKBOX = new UICheckBox();\r
+        }\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetPosition(208, 208);\r
+        RECORD_PLAY_PAUSE_CHECKBOX->Resize(50, 50);\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetViewId(RECORD_PLAY_PAUSE_CHECKBOX_VIEWID);\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetImages(PNG_UNIVERSAL_PAUSE_IMAGE, PNG_UNIVERSAL_PLAY_IMAGE);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *checkBoxClick = static_cast<UIView::OnClickListener *>(RecordPlayPresenter::GetInstance());\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetOnClickListener(checkBoxClick);\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_PAUSE_CHECKBOX);\r
+        RECORD_PLAY_PAUSE_CHECKBOX->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (RECORD_PLAY_PROVE_BUTTON == nullptr)\r
+        {\r
+            RECORD_PLAY_PROVE_BUTTON = CreateUIButton(60, 213, 40, 40, RECORD_PLAY_PROVE_BUTTON_VIEWID, PNG_RECORD_PLAY_PROVE_IMAGE, nullptr, &RECORD_PLAY_PROVE_BUTTON_CLICK);\r
+        }\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_PROVE_BUTTON);\r
+        RECORD_PLAY_PROVE_BUTTON->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (RECORD_PLAY_NEXT_BUTTON == nullptr)\r
+        {\r
+            RECORD_PLAY_NEXT_BUTTON = CreateUIButton(366, 213, 40, 40, RECORD_PLAY_NEXT_BUTTON_VIEWID, PNG_RECORD_PLAY_NEXT_IMAGE, nullptr, &RECORD_PLAY_NEXT_BUTTON_CLICK);\r
+        }\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_NEXT_BUTTON);\r
+        RECORD_PLAY_NEXT_BUTTON->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (RECORD_PLAY_DELETE_BUTTON == nullptr)\r
+        {\r
+            RECORD_PLAY_DELETE_BUTTON = CreateUIButton(137, 346, 40, 40, RECORD_PLAY_DELETE_BUTTON_VIEWID, PNG_RECORD_PLAY_DELETE_IMAGE, nullptr, &RECORD_PLAY_DELETE_BUTTON_CLICK);\r
+        }\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_DELETE_BUTTON);\r
+        RECORD_PLAY_DELETE_BUTTON->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        // Add Button to App\r
+        if (RECORD_PLAY_VOLUME_BUTTON == nullptr)\r
+        {\r
+            RECORD_PLAY_VOLUME_BUTTON = CreateUIButton(290, 346, 40, 40, RECORD_PLAY_VOLUME_BUTTON_VIEWID, PNG_RECORD_PLAY_VOLUME_IMAGE, nullptr, &RECORD_PLAY_VOLUME_BUTTON_CLICK);\r
+        }\r
+        // Add to rootView\r
+        container_->Add(RECORD_PLAY_VOLUME_BUTTON);\r
+        RECORD_PLAY_VOLUME_BUTTON->SetVisible(true);\r
+        /********************************************************************************************************/\r
+    }\r
+\r
+    void RecordPlayView::DeInitView()\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+        }\r
+        if (RECORD_PLAY_BACKGROUND_IMAGE != nullptr)\r
+        {\r
+            delete RECORD_PLAY_BACKGROUND_IMAGE;\r
+            RECORD_PLAY_BACKGROUND_IMAGE = nullptr;\r
+        }\r
+        if (RECORD_PLAY_CircleProgress != nullptr)\r
+        {\r
+            delete RECORD_PLAY_CircleProgress;\r
+            RECORD_PLAY_CircleProgress = nullptr;\r
+        }\r
+        if (RECORD_PLAY_PAUSE_CHECKBOX != nullptr)\r
+        {\r
+            delete RECORD_PLAY_PAUSE_CHECKBOX;\r
+            RECORD_PLAY_PAUSE_CHECKBOX = nullptr;\r
+        }\r
+        if (RecordLabel1 != nullptr)\r
+        {\r
+            delete RecordLabel1;\r
+            RecordLabel1 = nullptr;\r
+        }\r
+        if (RecordLabel2 != nullptr)\r
+        {\r
+            delete RecordLabel2;\r
+            RecordLabel2 = nullptr;\r
+        }\r
+        if (RECORD_PLAY_PROVE_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_PLAY_PROVE_BUTTON;\r
+            RECORD_PLAY_PROVE_BUTTON = nullptr;\r
+        }\r
+        if (RECORD_PLAY_NEXT_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_PLAY_NEXT_BUTTON;\r
+            RECORD_PLAY_NEXT_BUTTON = nullptr;\r
+        }\r
+        if (RECORD_PLAY_DELETE_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_PLAY_DELETE_BUTTON;\r
+            RECORD_PLAY_DELETE_BUTTON = nullptr;\r
+        }\r
+        if (RECORD_PLAY_VOLUME_BUTTON != nullptr)\r
+        {\r
+            delete RECORD_PLAY_VOLUME_BUTTON;\r
+            RECORD_PLAY_VOLUME_BUTTON = nullptr;\r
+        }\r
+        if (draglistener != nullptr)\r
+        {\r
+            delete draglistener;\r
+            draglistener = nullptr;\r
+        }\r
+        if (RECORD_PLAY_PROVE_BUTTON_CLICK != nullptr)\r
+        {\r
+            delete RECORD_PLAY_PROVE_BUTTON_CLICK;\r
+            RECORD_PLAY_PROVE_BUTTON_CLICK = nullptr;\r
+        }\r
+        if (RECORD_PLAY_NEXT_BUTTON_CLICK != nullptr)\r
+        {\r
+            delete RECORD_PLAY_NEXT_BUTTON_CLICK;\r
+            RECORD_PLAY_NEXT_BUTTON_CLICK = nullptr;\r
+        }\r
+        if (RECORD_PLAY_DELETE_BUTTON_CLICK != nullptr)\r
+        {\r
+            delete RECORD_PLAY_DELETE_BUTTON_CLICK;\r
+            RECORD_PLAY_DELETE_BUTTON_CLICK = nullptr;\r
+        }\r
+        if (RECORD_PLAY_VOLUME_BUTTON_CLICK != nullptr)\r
+        {\r
+            delete RECORD_PLAY_VOLUME_BUTTON_CLICK;\r
+            RECORD_PLAY_VOLUME_BUTTON_CLICK = nullptr;\r
+        }\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+\r
+    void RecordPlayView::OnStart()\r
+    {\r
+        View<RecordPlayPresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void RecordPlayView::OnSetUpView()\r
+    {\r
+        View<RecordPlayPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void RecordPlayView::OnTearDownView()\r
+    {\r
+\r
+        View<RecordPlayPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void RecordPlayView::OnStop()\r
+    {\r
+\r
+        View<RecordPlayPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordPresenter.cpp
new file mode 100644 (file)
index 0000000..5fbe792
--- /dev/null
@@ -0,0 +1,99 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "record/include/RecordPresenter.h"\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static RecordPresenter *g_pRecordPresenter = nullptr;\r
+\r
+    RecordPresenter::RecordPresenter()\r
+    {\r
+\r
+        g_pRecordPresenter = this;\r
+    }\r
+\r
+    RecordPresenter::~RecordPresenter()\r
+    {\r
+\r
+        g_pRecordPresenter = nullptr;\r
+    }\r
+\r
+    RecordPresenter *RecordPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pRecordPresenter;\r
+    }\r
+\r
+    void RecordPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<RecordView>::OnStart();\r
+    }\r
+\r
+    void RecordPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<RecordView>::OnPause();\r
+    }\r
+\r
+    void RecordPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<RecordView>::OnResume();\r
+    }\r
+\r
+    void RecordPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<RecordView>::OnStop();\r
+    }\r
+\r
+    bool RecordPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\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().ChangeSlice(VIEW_APPLIST);\r
+            return true;\r
+        }\r
+        else if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_LIST);\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+#ifdef __cplusplus\r
+    extern "C"\r
+    {\r
+#endif\r
+        int32_t AudioCaptureSample(int32_t argc, const char *argv[]);\r
+\r
+#ifdef __cplusplus\r
+    };\r
+#endif\r
+\r
+    bool RecordPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+\r
+        // 将参数保存到数组中\r
+        const char *args[] = {"01", "mp3", "16000", "1", "16", "/user/test/2024_2_27_record_test.mp3"};\r
+        int argc = sizeof(args) / sizeof(args[0]);\r
+\r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        if (strcmp(view.GetViewId(), RECORD_BUTTON) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_GOING);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Recording....");\r
+            // 调用AudioCaptureSample函数\r
+            AudioCaptureSample(argc, args);\r
+            return true;\r
+        }\r
+        return true;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordView.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordView.cpp
new file mode 100644 (file)
index 0000000..01c2b9c
--- /dev/null
@@ -0,0 +1,228 @@
+#include "record/include/RecordView.h"\r
+#include "record/include/RecordPresenter.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+    static ImageAnimatorInfo g_imageAnimator1Info[2] = {\r
+        {PNG_ANIMATOR1_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+        {PNG_ANIMATOR2_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+    };\r
+\r
+    static RecordView *g_pRecordView{nullptr};\r
+\r
+    RecordView::RecordView()\r
+    {\r
+        g_pRecordView = this;\r
+    }\r
+\r
+    RecordView::~RecordView()\r
+    {\r
+        DeInitView();\r
+        g_pRecordView = nullptr;\r
+    }\r
+\r
+    RecordView *RecordView::GetInstance()\r
+    {\r
+\r
+        return g_pRecordView;\r
+    }\r
+    void RecordView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            draglistener = static_cast<UIView::OnDragListener *>(RecordPresenter::GetInstance());\r
+            if (draglistener == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            container_->SetOnDragListener(draglistener);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+        }\r
+        // Add ScrollView to App\r
+        if (scrollView == nullptr)\r
+        {\r
+            scrollView = new UIScrollView();\r
+        }\r
+        scrollView->SetPosition(0, 0);\r
+        scrollView->Resize(466, 466);\r
+        scrollView->SetViewId("ScrollView");\r
+        scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        // Add to rootView\r
+        container_->Add(scrollView);\r
+        scrollView->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label1 == nullptr)\r
+        {\r
+            label1 = new UILabel();\r
+        }\r
+        label1->SetPosition(188, 52); // widget's left position and top position\r
+        label1->Resize(90, 35);       // widget's width and height\r
+        label1->SetViewId("label11"); // Set style\r
+        label1->SetStyle(STYLE_TEXT_FONT, 30);\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
+        scrollView->Add(label1);\r
+        label1->SetVisible(true);\r
+\r
+        // Add ImageView to App\r
+        if (RECORD1_Image == nullptr)\r
+        {\r
+            RECORD1_Image = new UIImageView();\r
+        }\r
+        RECORD1_Image->SetPosition(158, 129);      // widget's left position and top position\r
+        RECORD1_Image->Resize(150, 150);           // widget's width and height\r
+        RECORD1_Image->SetViewId("RECORD1_Image"); // Set style\r
+        RECORD1_Image->SetStyle(STYLE_BORDER_RADIUS, 10);\r
+        RECORD1_Image->SetSrc(PNG_RECORD1_IMAGE);\r
+        // Add to scrollView1\r
+        scrollView->Add(RECORD1_Image);\r
+        RECORD1_Image->SetVisible(true);\r
+        // Add Button to App\r
+        if (button == nullptr)\r
+        {\r
+            button = new UIButton();\r
+        }\r
+        button->SetPosition(178, 150);\r
+        button->Resize(120, 120);\r
+        button->SetViewId(RECORD_BUTTON);\r
+        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff5a36);\r
+        button->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+\r
+        // Set additional property\r
+        button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffff5a36, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BORDER_RADIUS, 100, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(RecordPresenter::GetInstance());\r
+        button->SetOnClickListener(buttonClick);\r
+        // Add to scrollView1\r
+        scrollView->Add(button);\r
+        button->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label2 == nullptr)\r
+        {\r
+            label2 = new UILabel();\r
+        }\r
+        label2->SetPosition(143, 330); // widget's left position and top position\r
+        label2->Resize(180, 35);       // 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
+\r
+        // Set additional property\r
+        label2->SetText("点击开始录音");\r
+        label2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\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
+        scrollView->Add(label2);\r
+        label2->SetVisible(true);\r
+\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator1_ == nullptr)\r
+        {\r
+            imageAnimator1_ = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator1_->SetPosition(213, 400);\r
+        imageAnimator1_->Resize(40, 40);\r
+        imageAnimator1_->SetViewId("imageAnimator1");\r
+        imageAnimator1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        // Set additional property\r
+        imageAnimator1_->SetImageAnimatorSrc(g_imageAnimator1Info, 2, 200);\r
+        imageAnimator1_->SetTimeOfPause(200);\r
+        imageAnimator1_->SetRepeatTimes(1);\r
+        imageAnimator1_->SetReverse(true);\r
+        imageAnimator1_->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView->Add(imageAnimator1_);\r
+        imageAnimator1_->SetVisible(true);\r
+    }\r
+    void RecordView::DeInitView(void)\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+        }\r
+        if (scrollView != nullptr)\r
+        {\r
+            delete scrollView;\r
+            scrollView = nullptr;\r
+        }\r
+        if (label1 != nullptr)\r
+        {\r
+            delete label1;\r
+            label1 = nullptr;\r
+        }\r
+        if (RECORD1_Image != nullptr)\r
+        {\r
+            delete RECORD1_Image;\r
+            RECORD1_Image = nullptr;\r
+        }\r
+        if (button != nullptr)\r
+        {\r
+            delete button;\r
+            button = nullptr;\r
+        }\r
+        if (label2 != nullptr)\r
+        {\r
+            delete label2;\r
+            label2 = nullptr;\r
+        }\r
+        if (imageAnimator1_ != nullptr)\r
+        {\r
+            delete imageAnimator1_;\r
+            imageAnimator1_ = nullptr;\r
+        }\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+    void RecordView::OnStart()\r
+    {\r
+        View<RecordPresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void RecordView::OnSetUpView()\r
+    {\r
+\r
+        View<RecordPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void RecordView::OnTearDownView()\r
+    {\r
+\r
+        View<RecordPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void RecordView::OnStop()\r
+    {\r
+\r
+        View<RecordPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+\r
+}
\ No newline at end of file
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_RECORD_IMAGE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_RECORD_IMAGE.bin
new file mode 100644 (file)
index 0000000..3e7b200
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_RECORD_IMAGE.bin differ