${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
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, // 信息通知
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);
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";
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";
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";
#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"
{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
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);
+ }
}
{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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+#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