${CMAKE_CURRENT_SOURCE_DIR}/nativeui/InitComponent/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/traing_card/
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/producttest/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/HeartCardView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/health_service.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.cpp
#天气
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialStaticImgView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser/DialBinParser.cpp
+ #Training
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingMoreView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingMorePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingLimitView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingLimitPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingNomalView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingNomalPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSsetView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSsetPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetDistView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetDistPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetSeptView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetSeptPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetTimeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetTimePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingControlView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingControlPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingCardView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingCardPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDataView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDataPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDetailView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDetailPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnoteView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnotePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2View.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2Presenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlackView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlackPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSnoteView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSnotePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingStrongView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingStrongPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlostPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlostView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSbackPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSbackView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/traing_card/Traing_CardView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traingrecord/src/TraingRecordView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traingrecord/src/TraingRecordPresenter.cpp
+
+
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhonePresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneCallView.cpp
VIEW_ROTATE, // 模拟表冠
VIEW_BLOODOXY, // 血氧饱和度界面
VIEW_HEART, // 心率监测
+ /* ----------------------------------- 训练 ----------------------------------- */
+ VIEW_TRAINING, // 训练
+ VIEW_TRAININGMORE, // 更多训练
+ VIEW_TRAININGLIMIT, // 极限运动子列表
+ VIEW_TRAININGNOMAL, // 正常训练开始界面(除骑行,健走,跑步外)
+ VIEW_TRAININGSET, // 训练目标(时长,卡路里)
+ VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数)
+ VIEW_TRAININGSETTIME, // 设置训练时长
+ VIEW_TRAININGSETCALULI, // 设置训练卡路里
+ VIEW_TRAININGSETDIST, // 设置训练路程
+ VIEW_TRAININGSETSTEP, // 设置训练步数
+ VIEW_TRAININGCRAD, // 训练卡片
+ VIEW_TRAININGCONTROL, // 训练控制(包括结束,暂停,继续训练)
+ VIEW_TRAININGDATA, // 训练数据
+ VIEW_TRAININGDETAIL, // 详细训练数据
+ VIEW_TRAININGENDNOTE, // 结束训练提醒
+ VIEW_TRAININGENDNOTE2, // 结束训练时间太短
+ VIEW_TRAININGENDDATA, // 训练结束详细数据
+ VIEW_TRAININGGPS, // GPS训练
+ VIEW_TRAININGGPSLACK, // 缺少GPS
+ VIEW_TRAININGGPSNOTE, // 连接GPS提醒
+ VIEW_TRAININGSTRONG, // 训练强度介绍
+ VIEW_TRAININGGPSLOST, // GPS断联
+ VIEW_TRAININGGPSBACK, // GPS回连
+ VIEW_TRAININGWIN, // 目标达成
+ VIEW_TRAINING_RECORD, // 训练记录
/* -------------------------------------------------------------------------- */
VIEW_MAIN_TEMP, // 体温界面(暂时不用)
VIEW_OFFLINEVOICE, // 语音助手界面(暂时不用)
VIEW_PHONECALLUP, // 通话界面
VIEW_PHONEDIR, // 电话簿
- VIEW_TEST, //测试
+ VIEW_TEST, // 测试
/* -------------------------------------------------------------------------- */
#ifdef SUPPORT_ALIPAY_SEC
VIEW_MAIN_ALIPAY,
VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
VIEW_EXTERN_APP = 0xFFFE, // 三方应用
VIEW_INVALIDE_APP = 0xFFFF,
-}
-AppViewId;
+} AppViewId;
/*
* Slice页面优先级,越小优先级越高
void InitHeartSlice(void);
void InitMainAlipaySlice(void);
void InitDialUpdateSlice(void);
+ /* ----------------------------------- 训练 ----------------------------------- */
+ void InitTraingSlice(void);
+ void InitTraingMoreSlice(void);
+ void InitTraingLimitSlice(void);
+ void InitTraingNomalSlice(void);
+ void InitTraingSetSlice(void);
+ void InitTraingGPSSetSlice(void);
+ void InitTraingStrongSlice(void);
+ void InitTraingSetTimeSlice(void);
+ void InitTraingSetCaluliSlice(void);
+ void InitTraingSetDistSlice(void);
+ void InitTraingSetStepSlice(void);
+ void InitTraingControlSlice(void);
+ void InitTraingCardSlice(void);
+ void InitTraingDataSlice(void);
+ void InitTraingDetailSlice(void);
+ void InitTraingEndnoteSlice(void);
+ void InitTraingEndnote2Slice(void);
+ void InitTraingEnddataSlice(void);
+ void InitTraingGPSSlice(void);
+ void InitTraingGPSlackSlice(void);
+ void InitTraingGPSnoteSlice(void);
+ void InitTraingGPSlostSlice(void);
+ void InitTraingGPSbackSlice(void);
+ void InitTraingWinSlice(void);
+ /* -------------------------------------------------------------------------- */
+ void InitTraingRecordSlice(void);
/* -------------------------------------------------------------------------- */
void InitSecondaryFunction(void);
void InitFastTrainingSlice(void);
void InitPhoneCallupSlice(void);
void InitPhoneRingSlice(void);
-
void InittestSlice(void);
+
private:
void InitAllNativeSlices(void);
static constexpr const char *PNG_CHECK_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin";
static constexpr const char *PNG_CHECK_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin";
static constexpr const char *PNG_CHECK_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin";
-#if 0
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_23.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_24.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_24 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_25.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_25 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_26.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_26 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_27.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_27 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_28.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_28 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_29.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_29 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_30.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_30 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_31.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_31 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_32.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_32 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_33.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_33 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_34.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_34 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_35.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_35 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_36.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_36 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_37.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_37 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_38.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_38 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_39.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_39 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_40.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_40 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_41.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_41 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_42.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_42 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_43.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_43 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_44.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_44 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_45.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_45 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_46.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_46 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_47.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_47 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_48.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_48 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_49.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_49 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_50.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_50 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_51.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_51 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_52.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_52 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_53.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_53 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_54.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_54 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_55.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_55 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_56.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_56 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_57.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_57 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_58.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_58 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_59.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_59 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_60.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_60 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_61.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_61 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_62.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_62 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_63.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_63 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_64.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_64 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_65.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_65 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_66.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_66 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_67.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_67 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_68.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_68 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_69.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_69 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_70.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_70 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_71.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_71 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_72.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_72 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_73.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_73 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_74.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_74 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_75.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_75 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_76.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_76 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_77.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_77 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_78.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_78 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_79.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_79 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_80.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_80 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_81.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_81 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_82.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_82 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_83.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_83 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_84.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_84 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_85.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_85 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_86.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_86 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_87.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_87 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_88.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_88 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_89.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_89 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_90.bin";
-#endif
/* -------------------------------------------------------------------------- */
static constexpr const char *PNG_APPLIST_ALIPAY_IMAGE = APP_RES_PATH "/alipay/alipay_logo.bin"; // 支付宝
static constexpr const char *PNG_ALIPAY_BIND_FAILURE = APP_RES_PATH "/alipay/ALIPAY_BIND_FAILURE.bin";
static constexpr const char *PNG_A019_095_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_16.bin";
static constexpr const char *PNG_BLUETOOTHEAR = APP_RES_PATH "/BLUETOOTHEAR.bin";
/* --------------------------------- AppList -------------------------------- */
- static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin"; // 闹钟
- static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin"; // 血氧
- static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_RES_PATH "/APPLIST_HEART.bin"; // 心率
- static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置
- static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin"; // 打电话
- static constexpr const char *PNG_APPLIST_CALLLOG_IMAGE = APP_RES_PATH "/APPLIST_CALLLOG.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_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin"; // 闹钟
+ static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin"; // 血氧
+ static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_RES_PATH "/APPLIST_HEART.bin"; // 心率
+ static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置
+ static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin"; // 打电话
+ static constexpr const char *PNG_APPLIST_CALLLOG_IMAGE = APP_RES_PATH "/APPLIST_CALLLOG.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_APPLIST_TRAINING_IMAGE = APP_RES_PATH "/APPLIST_TRAINING.bin"; // 训练
+ static constexpr const char *PNG_APPLIST_TRAINING_RECORD_IMAGE = APP_RES_PATH "/APPLIST_TRAINING_RECORD.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";
#include "producttest/include/testPresenter.h"
#include "producttest/include/testView.h"
+/* -------------------------------------------------------------------------- */
+#include "traing/include/TraingView.h"
+#include "traing/include/TraingPresenter.h"
+#include "traing/include/TraingMorePresenter.h"
+#include "traing/include/TraingMoreView.h"
+#include "traing/include/TraingLimitPresenter.h"
+#include "traing/include/TraingLimitView.h"
+#include "traing/include/TraingNomalPresenter.h"
+#include "traing/include/TraingNomalView.h"
+#include "traing/include/TraingSetPresenter.h"
+#include "traing/include/TraingSetView.h"
+#include "traing/include/TraingGPSsetPresenter.h"
+#include "traing/include/TraingGPSsetView.h"
+#include "traing/include/TraingSetTimePresenter.h"
+#include "traing/include/TraingSetTimeView.h"
+#include "traing/include/TraingSetCaluliPresenter.h"
+#include "traing/include/TraingSetCaluliView.h"
+#include "traing/include/TraingSetDistPresenter.h"
+#include "traing/include/TraingSetDistView.h"
+#include "traing/include/TraingSetSeptPresenter.h"
+#include "traing/include/TraingSetSeptView.h"
+#include "traing/include/TraingControlPresenter.h"
+#include "traing/include/TraingControlView.h"
+#include "traing/include/TraingCardPresenter.h"
+#include "traing/include/TraingCardView.h"
+#include "traing/include/TraingDataPresenter.h"
+#include "traing/include/TraingDataView.h"
+#include "traing/include/TraingDetailPresenter.h"
+#include "traing/include/TraingDetailView.h"
+#include "traing/include/TraingEndnotePresenter.h"
+#include "traing/include/TraingEndnoteView.h"
+#include "traing/include/TraingEndnote2Presenter.h"
+#include "traing/include/TraingEndnote2View.h"
+#include "traing/include/TraingEnddataPresenter.h"
+#include "traing/include/TraingEnddataView.h"
+#include "traing/include/TraingGPSPresenter.h"
+#include "traing/include/TraingGPSView.h"
+#include "traing/include/TraingGPSlackPresenter.h"
+#include "traing/include/TraingGPSlackView.h"
+#include "traing/include/TraingGPSnotePresenter.h"
+#include "traing/include/TraingGPSnoteView.h"
+#include "traing/include/TraingStrongPresenter.h"
+#include "traing/include/TraingStrongView.h"
+#include "traing/include/TraingGPSlostPresenter.h"
+#include "traing/include/TraingGPSlostView.h"
+#include "traing/include/TraingGPSbackPresenter.h"
+#include "traing/include/TraingGPSbackView.h"
+#include "traing/include/TraingWinPresenter.h"
+#include "traing/include/TraingWinView.h"
+
+#include "traingrecord/include/TraingRecordView.h"
+#include "traingrecord/include/TraingRecordPresenter.h"
+/* -------------------------------------------------------------------------- */
#ifdef SUPPORT_ALIPAY_SEC
#include "AlipayMainView.h"
{VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
{VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
-
+
{VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
{VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
{VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
{VIEW_BLOODOXY, &NativeLauncher::InitMainBloodOxyView},
{VIEW_HEART, &NativeLauncher::InitHeartSlice},
- {VIEW_PHONE, &NativeLauncher::InitPhoneSlice}, //电话
+ {VIEW_PHONE, &NativeLauncher::InitPhoneSlice}, // 电话
{VIEW_PHONECALL, &NativeLauncher::InitPhoneCallSlice},
{VIEW_PHONEDIR, &NativeLauncher::InitPhoneDirSlice},
{VIEW_PHONECALLING, &NativeLauncher::InitPhoneCallingSlice},
{VIEW_PHONERING, &NativeLauncher::InitPhoneRingSlice},
{VIEW_TEST, &NativeLauncher::InittestSlice},
-
+
+ /* ----------------------------------- 训练 ----------------------------------- */
+ {VIEW_TRAINING, &NativeLauncher::InitTraingSlice}, // 训练
+ {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练
+ {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练
+ {VIEW_TRAININGNOMAL, &NativeLauncher::InitTraingNomalSlice}, // 正常训练初始界面
+ {VIEW_TRAININGSET, &NativeLauncher::InitTraingSetSlice}, // 训练目标设置界面
+ {VIEW_TRAININGGPSSET, &NativeLauncher::InitTraingGPSSetSlice}, // 训练GPS目标设置界面
+ {VIEW_TRAININGSETTIME, &NativeLauncher::InitTraingSetTimeSlice}, // 设置目标时长
+ {VIEW_TRAININGSETCALULI, &NativeLauncher::InitTraingSetCaluliSlice}, // 设置目标卡路里
+ {VIEW_TRAININGSETDIST, &NativeLauncher::InitTraingSetDistSlice}, // 设置目标距离
+ {VIEW_TRAININGSETSTEP, &NativeLauncher::InitTraingSetStepSlice}, // 设置目标步数
+ {VIEW_TRAININGCONTROL, &NativeLauncher::InitTraingControlSlice}, // 训练控制
+ {VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice}, // 训练卡片
+ {VIEW_TRAININGDATA, &NativeLauncher::InitTraingDataSlice}, // 训练数据
+ {VIEW_TRAININGDETAIL, &NativeLauncher::InitTraingDetailSlice}, // 详细训练数据
+ {VIEW_TRAININGENDNOTE, &NativeLauncher::InitTraingEndnoteSlice}, // 训练结束提醒
+ {VIEW_TRAININGENDNOTE2, &NativeLauncher::InitTraingEndnote2Slice}, // 训练结束时间太短提醒
+ {VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice}, // 训练结束详细数据
+ {VIEW_TRAININGGPS, &NativeLauncher::InitTraingGPSSlice}, // GPS训练
+ {VIEW_TRAININGGPSLACK, &NativeLauncher::InitTraingGPSlackSlice}, // GPS缺少
+ {VIEW_TRAININGGPSNOTE, &NativeLauncher::InitTraingGPSnoteSlice}, // 提醒连接GPS
+ {VIEW_TRAININGSTRONG, &NativeLauncher::InitTraingStrongSlice}, // 训练强度介绍
+ {VIEW_TRAININGGPSLOST, &NativeLauncher::InitTraingGPSlostSlice}, // GPS断联
+ {VIEW_TRAININGGPSBACK, &NativeLauncher::InitTraingGPSbackSlice}, // GPS回连
+ {VIEW_TRAININGWIN, &NativeLauncher::InitTraingWinSlice}, // 训练目标达成
+
+ {VIEW_TRAINING_RECORD, &NativeLauncher::InitTraingRecordSlice}, // 训练目标达成
+ /* -------------------------------------------------------------------------- */
+
#ifdef SUPPORT_ALIPAY_SEC
{VIEW_MAIN_ALIPAY, &NativeLauncher::InitMainAlipaySlice},
#endif
{VIEW_PHONE, "phoneview"},
{VIEW_INDOORWALK, "IndoorWalkView"},
{VIEW_SHUTDOWN_OR_REBOOT, "RebootView"},
- {VIEW_TEST, "testView"}
- };
+ {VIEW_TEST, "testView"}};
NativeLauncher::NativeLauncher() {}
NativeLauncher::~NativeLauncher() {}
NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD, record);
}
-
void NativeLauncher::InitPhoneSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneSlice");
- SliceProxy *phoneview = new AbilitySliceProxy<PhoneView, PhonePresenter>;
- if (phoneview == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneSlice");
+ SliceProxy *phoneview = new AbilitySliceProxy<PhoneView, PhonePresenter>;
+ if (phoneview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONE, phoneview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONE, phoneview);
-}
-void NativeLauncher::InitPhoneCallSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice");
- SliceProxy *phonecallview = new AbilitySliceProxy<PhoneCallView, PhoneCallPresenter>;
- if (phonecallview == nullptr)
+ void NativeLauncher::InitPhoneCallSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice");
+ SliceProxy *phonecallview = new AbilitySliceProxy<PhoneCallView, PhoneCallPresenter>;
+ if (phonecallview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALL, phonecallview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALL, phonecallview);
-}
-void NativeLauncher::InitPhoneDirSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice");
- SliceProxy *phonedirview = new AbilitySliceProxy<PhoneDirView, PhoneDirPresenter>;
- if (phonedirview == nullptr)
+ void NativeLauncher::InitPhoneDirSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonedirview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice");
+ SliceProxy *phonedirview = new AbilitySliceProxy<PhoneDirView, PhoneDirPresenter>;
+ if (phonedirview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonedirview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONEDIR, phonedirview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONEDIR, phonedirview);
-}
-void NativeLauncher::InitPhoneCallingSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallingSlice");
- SliceProxy *phonecallingview = new AbilitySliceProxy<PhoneCallingView, PhoneCallingPresenter>;
- if (phonecallingview == nullptr)
+ void NativeLauncher::InitPhoneCallingSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallingview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallingSlice");
+ SliceProxy *phonecallingview = new AbilitySliceProxy<PhoneCallingView, PhoneCallingPresenter>;
+ if (phonecallingview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallingview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLING, phonecallingview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLING, phonecallingview);
-}
-void NativeLauncher::InitPhoneCallupSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallupSlice");
- SliceProxy *phonecallupview = new AbilitySliceProxy<PhoneCallupView, PhoneCallupPresenter>;
- if (phonecallupview == nullptr)
+ void NativeLauncher::InitPhoneCallupSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallupSlice");
+ SliceProxy *phonecallupview = new AbilitySliceProxy<PhoneCallupView, PhoneCallupPresenter>;
+ if (phonecallupview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLUP, phonecallupview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLUP, phonecallupview);
-}
-void NativeLauncher::InitPhoneRingSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneRingSlice");
- SliceProxy *phoneringview = new AbilitySliceProxy<PhoneRingView, PhoneRingPresenter>;
- if (phoneringview == nullptr)
+ void NativeLauncher::InitPhoneRingSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneRingSlice");
+ SliceProxy *phoneringview = new AbilitySliceProxy<PhoneRingView, PhoneRingPresenter>;
+ if (phoneringview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONERING, phoneringview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONERING, phoneringview);
-}
-void NativeLauncher::InittestSlice(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitestSlice");
- SliceProxy *testview = new AbilitySliceProxy<testView,testPresenter>;
- if (testview == nullptr)
+ void NativeLauncher::InittestSlice(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview");
- return;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitestSlice");
+ SliceProxy *testview = new AbilitySliceProxy<testView, testPresenter>;
+ if (testview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TEST, testview);
}
- NativeAbility::GetInstance().AddSliceProxy(VIEW_TEST, testview);
-}
-
+ /* ---------------------------------- 训练UI ---------------------------------- */
+ // 体能训练
+ void NativeLauncher::InitTraingSlice(void)
+ {
+ SliceProxy *traingview = new AbilitySliceProxy<TraingView, TraingPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAINING, traingview);
+ }
+ void NativeLauncher::InitTraingMoreSlice(void)
+ {
+ SliceProxy *traingmoreview = new AbilitySliceProxy<TraingMoreView, TraingMorePresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGMORE, traingmoreview);
+ }
+ void NativeLauncher::InitTraingLimitSlice(void)
+ {
+ SliceProxy *trainglimitview = new AbilitySliceProxy<TraingLimitView, TraingLimitPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGLIMIT, trainglimitview);
+ }
+ void NativeLauncher::InitTraingNomalSlice(void)
+ {
+ SliceProxy *traingnomalview = new AbilitySliceProxy<TraingNomalView, TraingNomalPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGNOMAL, traingnomalview);
+ }
+ void NativeLauncher::InitTraingSetSlice(void)
+ {
+ SliceProxy *traingsetview = new AbilitySliceProxy<TraingSetView, TraingSetPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSET, traingsetview);
+ }
+ void NativeLauncher::InitTraingGPSSetSlice(void)
+ {
+ SliceProxy *traingGPSsetview = new AbilitySliceProxy<TraingGPSsetView, TraingGPSsetPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSSET, traingGPSsetview);
+ }
+ void NativeLauncher::InitTraingSetTimeSlice(void)
+ {
+ SliceProxy *traingsettimeview = new AbilitySliceProxy<TraingSetTimeView, TraingSetTimePresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETTIME, traingsettimeview);
+ }
+ void NativeLauncher::InitTraingSetCaluliSlice(void)
+ {
+ SliceProxy *traingsetcaluliview = new AbilitySliceProxy<TraingSetCaluliView, TraingSetCaluliPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETCALULI, traingsetcaluliview);
+ }
+ void NativeLauncher::InitTraingSetDistSlice(void)
+ {
+ SliceProxy *traingsetdistview = new AbilitySliceProxy<TraingSetDistView, TraingSetDistPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETDIST, traingsetdistview);
+ }
+ void NativeLauncher::InitTraingSetStepSlice(void)
+ {
+ SliceProxy *traingsetstepview = new AbilitySliceProxy<TraingSetSeptView, TraingSetSeptPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETSTEP, traingsetstepview);
+ }
+ void NativeLauncher::InitTraingControlSlice(void)
+ {
+ SliceProxy *traingcontrolview = new AbilitySliceProxy<TraingControlView, TraingControlPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGCONTROL, traingcontrolview);
+ }
+ void NativeLauncher::InitTraingCardSlice(void)
+ {
+ SliceProxy *traingcardview = new AbilitySliceProxy<TraingCardView, TraingCardPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGCRAD, traingcardview);
+ }
+ void NativeLauncher::InitTraingDataSlice(void)
+ {
+ SliceProxy *traingdataview = new AbilitySliceProxy<TraingDataView, TraingDataPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDATA, traingdataview);
+ }
+ void NativeLauncher::InitTraingDetailSlice(void)
+ {
+ SliceProxy *traingdetailview = new AbilitySliceProxy<TraingDetailView, TraingDetailPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDETAIL, traingdetailview);
+ }
+ void NativeLauncher::InitTraingEndnoteSlice(void)
+ {
+ SliceProxy *traingendnoteview = new AbilitySliceProxy<TraingEndnoteView, TraingEndnotePresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE, traingendnoteview);
+ }
+ void NativeLauncher::InitTraingEndnote2Slice(void)
+ {
+ SliceProxy *traingendnote2view = new AbilitySliceProxy<TraingEndnote2View, TraingEndnote2Presenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE2, traingendnote2view);
+ }
+ void NativeLauncher::InitTraingEnddataSlice(void)
+ {
+ SliceProxy *traingenddataview = new AbilitySliceProxy<TraingEnddataView, TraingEnddataPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDDATA, traingenddataview);
+ }
+ void NativeLauncher::InitTraingGPSSlice(void)
+ {
+ SliceProxy *traingGPSview = new AbilitySliceProxy<TraingGPSView, TraingGPSPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPS, traingGPSview);
+ }
+ void NativeLauncher::InitTraingGPSlackSlice(void)
+ {
+ SliceProxy *traingGPSlackview = new AbilitySliceProxy<TraingGPSlackView, TraingGPSlackPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSLACK, traingGPSlackview);
+ }
+ void NativeLauncher::InitTraingGPSnoteSlice(void)
+ {
+ SliceProxy *traingGPSnoteview = new AbilitySliceProxy<TraingGPSnoteView, TraingGPSnotePresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSNOTE, traingGPSnoteview);
+ }
+ void NativeLauncher::InitTraingStrongSlice(void)
+ {
+ SliceProxy *traingStrongview = new AbilitySliceProxy<TraingStrongView, TraingStrongPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSTRONG, traingStrongview);
+ }
+ void NativeLauncher::InitTraingGPSlostSlice(void)
+ {
+ SliceProxy *traingGPSlostview = new AbilitySliceProxy<TraingGPSlostView, TraingGPSlostPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSLOST, traingGPSlostview);
+ }
+ void NativeLauncher::InitTraingGPSbackSlice(void)
+ {
+ SliceProxy *traingGPSbackview = new AbilitySliceProxy<TraingGPSbackView, TraingGPSbackPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSBACK, traingGPSbackview);
+ }
+ void NativeLauncher::InitTraingWinSlice(void)
+ {
+ SliceProxy *traingwinview = new AbilitySliceProxy<TraingWinView, TraingWinPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGWIN, traingwinview);
+ }
+ void NativeLauncher::InitTraingRecordSlice(void)
+ {
+ SliceProxy *traingrecordview = new AbilitySliceProxy<TraingRecordView, TraingRecordPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAINING_RECORD, traingrecordview);
+ }
+ /* -------------------------------------------------------------------------- */
}
{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_TRAINING, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_TRAINING_IMAGE, "体能训练", nullptr},
+ {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_TRAINING_RECORD_IMAGE, "训练记录", nullptr},
{VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr},
{VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, "录音", nullptr},
{VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
#include "components/ui_cross_view.h"
#include "heart_blood/include/BloodCardView.h"
-#include "traing/include/TraingView.h"
+#include "traing/traing_card/Traing_CardView.h"
#include "ApplistCardView.h"
#include "weather/include/WeatherControlView.h"
#include "message/include/MessageCardView.h"
HeartRateView *heartRateView{nullptr};
BloodCardView *bloodView{nullptr};
WeatherControlView *weatherControlView{nullptr};
- TraingView *traingView{nullptr};
+ Traing_CardView *traingView{nullptr};
ApplistCardView *applistCardView{nullptr};
UIButton *changebut{nullptr};
/* -------------------------------------------------------------------------- */
{BloodOxygen, &MainViewSample::InitBloodOxygenPage},
{TRAINING, &MainViewSample::InitTrainingPage},
{COMPASS, &MainViewSample::InitCompassPage},
- {WEATHER, &MainViewSample::InitWeatherPage},
+ //{WEATHER, &MainViewSample::InitWeatherPage},
{MUSIC_PLAYER, &MainViewSample::InitMusicPlayerPage},
#if 0
{APPLIST,&MainViewSample::InitApplistPage}
// 主界面训练卡片
UICardPage *MainViewSample::InitTrainingPage(void)
{
- traingView = new TraingView();
+ traingView = new Traing_CardView();
if (traingView == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "traingView new fail");
TRAINING,
BloodOxygen,
COMPASS,
- WEATHER,
+ // WEATHER,
MUSIC_PLAYER,
// APPLIST,
MAX_CARD,
--- /dev/null
+#ifndef _TraingCard_PRESENTER_H\r
+#define _TraingCard_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "TraingCardView.h"\r
+\r
+namespace OHOS\r
+{\r
+ class TraingCardView;\r
+\r
+ class TraingCardPresenter : public Presenter<TraingCardView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener\r
+ {\r
+ public:\r
+ TraingCardPresenter();\r
+ virtual ~TraingCardPresenter();\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ static TraingCardPresenter *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 _TraingCard_VIEW_H\r
+#define _TraingCard_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include <ui_scroll_view.h>\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_image_animator.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+#include "components/ui_swipe_view.h"\r
+\r
+#include "TraingCardPresenter.h"\r
+namespace OHOS\r
+{\r
+ class TraingCardPresenter;\r
+ class TraingCardView : public View<TraingCardPresenter>\r
+ {\r
+\r
+ public:\r
+ TraingCardView();\r
+ virtual ~TraingCardView();\r
+ static TraingCardView *GetInstance(void);\r
+ \r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void InitView();\r
+ void DeInit();\r
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);\r
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);\r
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);\r
+ void InitList();\r
+ void PreLoad(void);\r
+\r
+ // 通过函数改变\r
+ void SetLabel();\r
+ void SetButton();\r
+\r
+ private:\r
+ UIView::OnDragListener *draglistener{nullptr};\r
+ TraingCardView(TraingCardView &&) = delete;\r
+ TraingCardView &operator=(TraingCardView &&) = delete;\r
+\r
+ UISwipeView *swipe_ = nullptr;\r
+\r
+ UILabel *label1_ = nullptr;\r
+ UILabel *label2_ = nullptr;\r
+ UILabel *label3_ = nullptr;\r
+\r
+ bool viewiInitStatus{false};\r
+ };\r
+} // namespace OHOS\r
+#endif // TraingCard_PRESENTER_H\r
--- /dev/null
+#ifndef _TraingControl_PRESENTER_H\r
+#define _TraingControl_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "TraingControlView.h"\r
+\r
+namespace OHOS\r
+{\r
+ class TraingControlView;\r
+\r
+ class TraingControlPresenter : public Presenter<TraingControlView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener\r
+ {\r
+ public:\r
+ TraingControlPresenter();\r
+ virtual ~TraingControlPresenter();\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ std::string test = "暂停";\r
+ static TraingControlPresenter *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 _TraingControl_VIEW_H\r
+#define _TraingControl_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include <ui_scroll_view.h>\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_image_animator.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+\r
+#include "TraingControlPresenter.h"\r
+namespace OHOS\r
+{\r
+#define BUTTONSTOP "button1"\r
+#define BUTTONPAUSE "button2"\r
+#define BUTTONCONTINUE "button3"\r
+\r
+#define BUTTON_PAUSE_IMG_SRC "/user/res/Training/sport-pause.bin"\r
+#define BUTTON_STOP_IMG_SRC "/user/res/Training/sport-stop.bin"\r
+#define BUTTON_CONTINUE_IMG_SRC "/user/res/Training/sport-continue.bin"\r
+\r
+ class TraingControlPresenter;\r
+ class TraingControlView : public View<TraingControlPresenter>\r
+ {\r
+\r
+ public:\r
+ TraingControlView();\r
+ virtual ~TraingControlView();\r
+ static TraingControlView *GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void InitView();\r
+ void DeInit();\r
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);\r
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);\r
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);\r
+ void InitList();\r
+ void PreLoad(void);\r
+\r
+ //通过函数改变\r
+ void SetLabel();\r
+ void SetButton();\r
+\r
+ private:\r
+ UIView::OnDragListener *draglistener{nullptr};\r
+ TraingControlView(TraingControlView &&) = delete;\r
+ TraingControlView &operator=(TraingControlView &&) = delete;\r
+\r
+ UIViewGroup *container_ = nullptr;\r
+\r
+ UILabel *label1_ = nullptr;\r
+ UILabel *label2_ = nullptr;\r
+ UILabel *label3_ = nullptr;\r
+ UILabel *label4_ = nullptr;\r
+\r
+ UIImageView *image1_ = nullptr;\r
+\r
+ UIButton *button1_ = nullptr;\r
+ UIButton *button2_ = nullptr;\r
+\r
+ bool viewiInitStatus{false};\r
+ };\r
+} // namespace OHOS\r
+#endif // TraingControl_PRESENTER_H\r
--- /dev/null
+#ifndef _TraingData_PRESENTER_H\r
+#define _TraingData_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "TraingDataView.h"\r
+\r
+namespace OHOS\r
+{\r
+ class TraingDataView;\r
+\r
+ class TraingDataPresenter : public Presenter<TraingDataView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener\r
+ {\r
+ public:\r
+ TraingDataPresenter();\r
+ virtual ~TraingDataPresenter();\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ static TraingDataPresenter *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 _TraingData_VIEW_H\r
+#define _TraingData_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include <ui_scroll_view.h>\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_image_animator.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+\r
+#include "TraingDataPresenter.h"\r
+namespace OHOS\r
+{\r
+#define BUTTONNOTE "button1"\r
+\r
+\r
+ class TraingDataPresenter;\r
+ class TraingDataView : public View<TraingDataPresenter>\r
+ {\r
+\r
+ public:\r
+ TraingDataView();\r
+ virtual ~TraingDataView();\r
+ static TraingDataView *GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void InitView();\r
+ void DeInit();\r
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);\r
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);\r
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);\r
+ void InitList();\r
+ void PreLoad(void);\r
+\r
+ // 通过函数改变\r
+ void SetLabel();\r
+ void SetButton();\r
+\r
+ private:\r
+ UIView::OnDragListener *draglistener{nullptr};\r
+ TraingDataView(TraingDataView &&) = delete;\r
+ TraingDataView &operator=(TraingDataView &&) = delete;\r
+\r
+ UIViewGroup *container_ = nullptr;\r
+\r
+ UILabel *label1_ = nullptr;\r
+ UILabel *label2_ = nullptr;\r
+ UILabel *label3_ = nullptr;\r
+ UILabel *label4_ = nullptr;\r
+ UILabel *label5_ = nullptr;\r
+\r
+ UIImageView *image1_ = nullptr;\r
+ UIImageView *image2_ = nullptr;\r
+ UIImageView *image3_ = nullptr;\r
+ UIImageView *image4_ = nullptr;\r
+ UIImageView *image5_ = nullptr;\r
+ UIImageView *image6_ = nullptr;\r
+\r
+ UIButton *button1_ = nullptr;\r
+ bool viewiInitStatus{false};\r
+ };\r
+} // namespace OHOS\r
+#endif // TraingData_PRESENTER_H\r
--- /dev/null
+#ifndef _TraingDetail_PRESENTER_H\r
+#define _TraingDetail_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "TraingDetailView.h"\r
+\r
+namespace OHOS\r
+{\r
+ class TraingDetailView;\r
+\r
+ class TraingDetailPresenter : public Presenter<TraingDetailView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener\r
+ {\r
+ public:\r
+ TraingDetailPresenter();\r
+ virtual ~TraingDetailPresenter();\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ static TraingDetailPresenter *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 _TraingDetail_VIEW_H\r
+#define _TraingDetail_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include <ui_scroll_view.h>\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_image_animator.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+\r
+#include "TraingDetailPresenter.h"\r
+namespace OHOS\r
+{\r
+ class TraingDetailPresenter;\r
+ class TraingDetailView : public View<TraingDetailPresenter>\r
+ {\r
+\r
+ public:\r
+ TraingDetailView();\r
+ virtual ~TraingDetailView();\r
+ static TraingDetailView *GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void InitView();\r
+ void DeInit();\r
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);\r
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);\r
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);\r
+ void InitList();\r
+ void PreLoad(void);\r
+\r
+ // 通过函数改变\r
+ void SetLabel();\r
+ void SetButton();\r
+\r
+ private:\r
+ UIView::OnDragListener *draglistener{nullptr};\r
+ TraingDetailView(TraingDetailView &&) = delete;\r
+ TraingDetailView &operator=(TraingDetailView &&) = delete;\r
+\r
+ UIViewGroup *container_ = nullptr;\r
+\r
+ UILabel *label1_ = nullptr;\r
+ UILabel *label2_ = nullptr;\r
+ UILabel *label3_ = nullptr;\r
+ UILabel *label4_ = nullptr;\r
+ UILabel *label5_ = nullptr;\r
+ UILabel *label6_ = nullptr;\r
+ UILabel *label7_ = nullptr;\r
+ UILabel *label8_ = nullptr;\r
+\r
+ UIImageView *image1_ = nullptr;\r
+ UIImageView *image2_ = nullptr;\r
+ UIImageView *image3_ = nullptr;\r
+ UIImageView *image4_ = nullptr;\r
+ UIImageView *image5_ = nullptr;\r
+ UIImageView *image6_ = nullptr;\r
+ UIImageView *image7_ = nullptr;\r
+\r
+ bool viewiInitStatus{false};\r
+ };\r
+} // namespace OHOS\r
+#endif // TraingDetail_PRESENTER_H\r
--- /dev/null
+#ifndef _TraingEnddata_PRESENTER_H
+#define _TraingEnddata_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingEnddataView.h"
+
+namespace OHOS
+{
+ class TraingEnddataView;
+
+ class TraingEnddataPresenter : public Presenter<TraingEnddataView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingEnddataPresenter();
+ virtual ~TraingEnddataPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ static TraingEnddataPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingEnddata_VIEW_H
+#define _TraingEnddata_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingEnddataPresenter.h"
+namespace OHOS
+{
+#define BUTTONBACK "button1"
+
+ class TraingEnddataPresenter;
+ class TraingEnddataView : public View<TraingEnddataPresenter>
+ {
+
+ public:
+ TraingEnddataView();
+ virtual ~TraingEnddataView();
+ static TraingEnddataView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ // 通过函数改变
+ void SetLabel();
+ void SetButton();
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingEnddataView(TraingEnddataView &&) = delete;
+ TraingEnddataView &operator=(TraingEnddataView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UILabel *label5_ = nullptr;
+ UILabel *label6_ = nullptr;
+ UILabel *label7_ = nullptr;
+ UILabel *label8_ = nullptr;
+ UILabel *label9_ = nullptr;
+ UILabel *label10_ = nullptr;
+ UILabel *label11_ = nullptr;
+ UILabel *label12_ = nullptr;
+ UILabel *label13_ = nullptr;
+ UILabel *label14_ = nullptr;
+ UILabel *label15_ = nullptr;
+ UILabel *label16_ = nullptr;
+ UILabel *label17_ = nullptr;
+ UILabel *label18_ = nullptr;
+ UILabel *label19_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+ UIImageView *image5_ = nullptr;
+ UIImageView *image6_ = nullptr;
+ UIImageView *image7_ = nullptr;
+ UIImageView *image8_ = nullptr;
+ UIImageView *image9_ = nullptr;
+ UIImageView *image10_ = nullptr;
+ UIImageView *image11_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingEnddata_PRESENTER_H
--- /dev/null
+#ifndef _TraingEndnote2_PRESENTER_H
+#define _TraingEndnote2_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingEndnote2View.h"
+
+namespace OHOS
+{
+ class TraingEndnote2View;
+
+ class TraingEndnote2Presenter : public Presenter<TraingEndnote2View>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingEndnote2Presenter();
+ virtual ~TraingEndnote2Presenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ static TraingEndnote2Presenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingEndnote2_VIEW_H
+#define _TraingEndnote2_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingEndnote2Presenter.h"
+namespace OHOS
+{
+#define BUTTONNO "button1"
+#define BUTTONYES "button2"
+
+ class TraingEndnote2Presenter;
+ class TraingEndnote2View : public View<TraingEndnote2Presenter>
+ {
+
+ public:
+ TraingEndnote2View();
+ virtual ~TraingEndnote2View();
+ static TraingEndnote2View *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ // 通过函数改变
+ void SetLabel();
+ void SetButton();
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingEndnote2View(TraingEndnote2View &&) = delete;
+ TraingEndnote2View &operator=(TraingEndnote2View &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingEndnote2_PRESENTER_H
--- /dev/null
+#ifndef _TraingEndnote_PRESENTER_H
+#define _TraingEndnote_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingEndnoteView.h"
+
+namespace OHOS
+{
+ class TraingEndnoteView;
+
+ class TraingEndnotePresenter : public Presenter<TraingEndnoteView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingEndnotePresenter();
+ virtual ~TraingEndnotePresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ static TraingEndnotePresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingEndnote_VIEW_H
+#define _TraingEndnote_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingEndnotePresenter.h"
+namespace OHOS
+{
+#define BUTTONNO "button1"
+#define BUTTONYES "button2"
+
+ class TraingEndnotePresenter;
+ class TraingEndnoteView : public View<TraingEndnotePresenter>
+ {
+
+ public:
+ TraingEndnoteView();
+ virtual ~TraingEndnoteView();
+ static TraingEndnoteView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ // 通过函数改变
+ void SetLabel();
+ void SetButton();
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingEndnoteView(TraingEndnoteView &&) = delete;
+ TraingEndnoteView &operator=(TraingEndnoteView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingEndnote_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPS_PRESENTER_H
+#define _TraingGPS_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSView.h"
+
+namespace OHOS
+{
+ class TraingGPSView;
+
+ class TraingGPSPresenter : public Presenter<TraingGPSView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSPresenter();
+ virtual ~TraingGPSPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPS_VIEW_H
+#define _TraingGPS_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSPresenter.h"
+namespace OHOS
+{
+#define BUTTONGO "button1"
+#define BUTTONSET "button2"
+
+ class TraingGPSPresenter;
+ class TraingGPSView : public View<TraingGPSPresenter>
+ {
+
+ public:
+ TraingGPSView();
+ virtual ~TraingGPSView();
+ static TraingGPSView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSView(TraingGPSView &&) = delete;
+ TraingGPSView &operator=(TraingGPSView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPS_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPSback_PRESENTER_H
+#define _TraingGPSback_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSbackView.h"
+
+namespace OHOS
+{
+ class TraingGPSbackView;
+
+ class TraingGPSbackPresenter : public Presenter<TraingGPSbackView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSbackPresenter();
+ virtual ~TraingGPSbackPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSbackPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPSback_VIEW_H
+#define _TraingGPSback_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSbackPresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+
+ class TraingGPSbackPresenter;
+ class TraingGPSbackView : public View<TraingGPSbackPresenter>
+ {
+
+ public:
+ TraingGPSbackView();
+ virtual ~TraingGPSbackView();
+ static TraingGPSbackView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSbackView(TraingGPSbackView &&) = delete;
+ TraingGPSbackView &operator=(TraingGPSbackView &&) = delete;
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPSback_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPSlack_PRESENTER_H
+#define _TraingGPSlack_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSlackView.h"
+
+namespace OHOS
+{
+ class TraingGPSlackView;
+
+ class TraingGPSlackPresenter : public Presenter<TraingGPSlackView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSlackPresenter();
+ virtual ~TraingGPSlackPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSlackPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPSlack_VIEW_H
+#define _TraingGPSlack_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSlackPresenter.h"
+namespace OHOS
+{
+#define BUTTONGO "button1"
+#define BUTTONSET "button2"
+
+ class TraingGPSlackPresenter;
+ class TraingGPSlackView : public View<TraingGPSlackPresenter>
+ {
+
+ public:
+ TraingGPSlackView();
+ virtual ~TraingGPSlackView();
+ static TraingGPSlackView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSlackView(TraingGPSlackView &&) = delete;
+ TraingGPSlackView &operator=(TraingGPSlackView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPSlack_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPSlost_PRESENTER_H
+#define _TraingGPSlost_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSlostView.h"
+
+namespace OHOS
+{
+ class TraingGPSlostView;
+
+ class TraingGPSlostPresenter : public Presenter<TraingGPSlostView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSlostPresenter();
+ virtual ~TraingGPSlostPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSlostPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPSlost_VIEW_H
+#define _TraingGPSlost_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSlostPresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+
+ class TraingGPSlostPresenter;
+ class TraingGPSlostView : public View<TraingGPSlostPresenter>
+ {
+
+ public:
+ TraingGPSlostView();
+ virtual ~TraingGPSlostView();
+ static TraingGPSlostView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSlostView(TraingGPSlostView &&) = delete;
+ TraingGPSlostView &operator=(TraingGPSlostView &&) = delete;
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPSlost_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPSnote_PRESENTER_H
+#define _TraingGPSnote_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSnoteView.h"
+
+namespace OHOS
+{
+ class TraingGPSnoteView;
+
+ class TraingGPSnotePresenter : public Presenter<TraingGPSnoteView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSnotePresenter();
+ virtual ~TraingGPSnotePresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSnotePresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPSnote_VIEW_H
+#define _TraingGPSnote_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSnotePresenter.h"
+namespace OHOS
+{
+#define BUTTONBACK "button1"
+#define BUTTONGO "button2"
+
+ class TraingGPSnotePresenter;
+ class TraingGPSnoteView : public View<TraingGPSnotePresenter>
+ {
+
+ public:
+ TraingGPSnoteView();
+ virtual ~TraingGPSnoteView();
+ static TraingGPSnoteView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSnoteView(TraingGPSnoteView &&) = delete;
+ TraingGPSnoteView &operator=(TraingGPSnoteView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPSnote_PRESENTER_H
--- /dev/null
+#ifndef _TraingGPSset_PRESENTER_H
+#define _TraingGPSset_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingGPSsetView.h"
+
+namespace OHOS
+{
+ class TraingGPSsetView;
+
+ class TraingGPSsetPresenter : public Presenter<TraingGPSsetView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingGPSsetPresenter();
+ virtual ~TraingGPSsetPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingGPSsetPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingGPSset_VIEW_H
+#define _TraingGPSset_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingGPSsetPresenter.h"
+namespace OHOS
+{
+#define BUTTONTIME "button1"
+#define BUTTONMIL "button2"
+#define BUTTONCALULI "button3"
+#define BUTTONWALK "button4"
+
+ class TraingGPSsetPresenter;
+ class TraingGPSsetView : public View<TraingGPSsetPresenter>
+ {
+
+ public:
+ TraingGPSsetView();
+ virtual ~TraingGPSsetView();
+ static TraingGPSsetView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingGPSsetView(TraingGPSsetView &&) = delete;
+ TraingGPSsetView &operator=(TraingGPSsetView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UILabel *label5_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIButton *button3_ = nullptr;
+ UIButton *button4_ = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+
+ UIList *list1_ = nullptr;
+ IconAdapter *list1adapter_ = nullptr;
+ List<IconItemNode *> *list1data_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingGPSset_PRESENTER_H
--- /dev/null
+#ifndef _TraingLimit_PRESENTER_H
+#define _TraingLimit_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingLimitView.h"
+
+namespace OHOS
+{
+ class TraingLimitView;
+
+ class TraingLimitPresenter : public Presenter<TraingLimitView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingLimitPresenter();
+ virtual ~TraingLimitPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingLimitPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingLimit_VIEW_H
+#define _TraingLimit_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingLimitPresenter.h"
+namespace OHOS
+{
+#define BUTTON1 "button1"
+#define BUTTON2 "button2"
+#define BUTTON3 "button3"
+#define BUTTON4 "button4"
+#define BUTTON5 "button5"
+#define BUTTON6 "button6"
+#define BUTTON7 "button7"
+#define BUTTON8 "button8"
+
+ class TraingLimitPresenter;
+ class TraingLimitView : public View<TraingLimitPresenter>
+ {
+
+ public:
+ TraingLimitView();
+ virtual ~TraingLimitView();
+ static TraingLimitView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingLimitView(TraingLimitView &&) = delete;
+ TraingLimitView &operator=(TraingLimitView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+ UIImageView *image5_ = nullptr;
+ UIImageView *image6_ = nullptr;
+ UIImageView *image7_ = nullptr;
+ UIImageView *image8_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIButton *button3_ = nullptr;
+ UIButton *button4_ = nullptr;
+ UIButton *button5_ = nullptr;
+ UIButton *button6_ = nullptr;
+ UIButton *button7_ = nullptr;
+ UIButton *button8_ = nullptr;
+ UIList *list1_ = nullptr;
+ IconAdapter *list1adapter_ = nullptr;
+ List<IconItemNode *> *list1data_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingLimit_PRESENTER_H
--- /dev/null
+#ifndef _TraingMore_PRESENTER_H
+#define _TraingMore_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingMoreView.h"
+
+namespace OHOS
+{
+ class TraingMoreView;
+
+ class TraingMorePresenter : public Presenter<TraingMoreView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingMorePresenter();
+ virtual ~TraingMorePresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingMorePresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingMore_VIEW_H
+#define _TraingMore_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingMorePresenter.h"
+namespace OHOS
+{
+#define BUTTON_FITNESS "button1" // 健身
+#define BUTTON_DANCE "button2" // 舞蹈
+#define BUTTON_REST "button3" // 休闲运动
+#define BUTTON_BALL "button4" // 球类
+#define BUTTON_SWIMMING "button5" // 水上运动
+#define BUTTON_ICE "button6" // 冰上运动
+#define BUTTON_LIMIT "button7" // 极限运动
+#define BUTTON_OTHER "button8" // 其他
+
+ class TraingMorePresenter;
+ class TraingMoreView : public View<TraingMorePresenter>
+ {
+
+ public:
+ TraingMoreView();
+ virtual ~TraingMoreView();
+ static TraingMoreView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingMoreView(TraingMoreView &&) = delete;
+ TraingMoreView &operator=(TraingMoreView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+ UIImageView *image5_ = nullptr;
+ UIImageView *image6_ = nullptr;
+ UIImageView *image7_ = nullptr;
+ UIImageView *image8_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIButton *button3_ = nullptr;
+ UIButton *button4_ = nullptr;
+ UIButton *button5_ = nullptr;
+ UIButton *button6_ = nullptr;
+ UIButton *button7_ = nullptr;
+ UIButton *button8_ = nullptr;
+ UIList *list1_ = nullptr;
+ IconAdapter *list1adapter_ = nullptr;
+ List<IconItemNode *> *list1data_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingMore_PRESENTER_H
--- /dev/null
+#ifndef _TraingNomal_PRESENTER_H
+#define _TraingNomal_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingNomalView.h"
+
+namespace OHOS
+{
+ class TraingNomalView;
+
+ class TraingNomalPresenter : public Presenter<TraingNomalView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingNomalPresenter();
+ virtual ~TraingNomalPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingNomalPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingNomal_VIEW_H
+#define _TraingNomal_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingNomalPresenter.h"
+namespace OHOS
+{
+#define BUTTONGO "button1"
+#define BUTTONSET "button2"
+
+ class TraingNomalPresenter;
+ class TraingNomalView : public View<TraingNomalPresenter>
+ {
+
+ public:
+ TraingNomalView();
+ virtual ~TraingNomalView();
+ static TraingNomalView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingNomalView(TraingNomalView &&) = delete;
+ TraingNomalView &operator=(TraingNomalView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingNomal_PRESENTER_H
--- /dev/null
+#ifndef _Traing_PRESENTER_H
+#define _Traing_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingView.h"
+
+namespace OHOS
+{
+ class TraingView;
+
+ class TraingPresenter : public Presenter<TraingView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingPresenter();
+ virtual ~TraingPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingSetCaluli_PRESENTER_H\r
+#define _TraingSetCaluli_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "TraingSetCaluliView.h"\r
+\r
+namespace OHOS\r
+{\r
+ class TraingSetCaluliView;\r
+\r
+ class TraingSetCaluliPresenter : public Presenter<TraingSetCaluliView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener\r
+ {\r
+ public:\r
+ TraingSetCaluliPresenter();\r
+ virtual ~TraingSetCaluliPresenter();\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+\r
+ static TraingSetCaluliPresenter *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 _TraingSetCaluli_VIEW_H\r
+#define _TraingSetCaluli_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include <ui_scroll_view.h>\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_image_animator.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_chart.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+#include "components/ui_picker.h"\r
+\r
+#include "TraingSetCaluliPresenter.h"\r
+namespace OHOS\r
+{\r
+#define BUTTONOK "button1"\r
+\r
+\r
+ class TraingSetCaluliPresenter;\r
+ class TraingSetCaluliView : public View<TraingSetCaluliPresenter>\r
+ {\r
+\r
+ public:\r
+ TraingSetCaluliView();\r
+ virtual ~TraingSetCaluliView();\r
+ static TraingSetCaluliView *GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnSetUpView() override;\r
+ void OnTearDownView() override;\r
+ void OnStop() override;\r
+ void InitView();\r
+ void DeInit();\r
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);\r
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);\r
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);\r
+ void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);\r
+ void InitList();\r
+ void PreLoad(void);\r
+\r
+ private:\r
+ UIView::OnDragListener *draglistener{nullptr};\r
+ TraingSetCaluliView(TraingSetCaluliView &&) = delete;\r
+ TraingSetCaluliView &operator=(TraingSetCaluliView &&) = delete;\r
+\r
+ UIViewGroup *container_ = nullptr;\r
+ UILabel *label1_ = nullptr;\r
+ UIButton *button1_ = nullptr;\r
+ UIPicker *uiPicker1_ = nullptr;\r
+\r
+ bool viewiInitStatus{false};\r
+ };\r
+} // namespace OHOS\r
+#endif // TraingSetCaluli_PRESENTER_H\r
--- /dev/null
+#ifndef _TraingSetDist_PRESENTER_H
+#define _TraingSetDist_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingSetDistView.h"
+
+namespace OHOS
+{
+ class TraingSetDistView;
+
+ class TraingSetDistPresenter : public Presenter<TraingSetDistView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingSetDistPresenter();
+ virtual ~TraingSetDistPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingSetDistPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+
+#ifndef _TraingSetDist_VIEW_H
+#define _TraingSetDist_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+#include "components/ui_picker.h"
+
+#include "TraingSetDistPresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+
+ class TraingSetDistPresenter;
+ class TraingSetDistView : public View<TraingSetDistPresenter>
+ {
+
+ public:
+ TraingSetDistView();
+ virtual ~TraingSetDistView();
+ static TraingSetDistView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingSetDistView(TraingSetDistView &&) = delete;
+ TraingSetDistView &operator=(TraingSetDistView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIPicker *uiPicker1_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingSetDist_PRESENTER_H
--- /dev/null
+#ifndef _TraingSet_PRESENTER_H
+#define _TraingSet_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingSetView.h"
+
+namespace OHOS
+{
+ class TraingSetView;
+
+ class TraingSetPresenter : public Presenter<TraingSetView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingSetPresenter();
+ virtual ~TraingSetPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingSetPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingSetSept_PRESENTER_H
+#define _TraingSetSept_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingSetSeptView.h"
+
+namespace OHOS
+{
+ class TraingSetSeptView;
+
+ class TraingSetSeptPresenter : public Presenter<TraingSetSeptView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingSetSeptPresenter();
+ virtual ~TraingSetSeptPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingSetSeptPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+
+#ifndef _TraingSetSept_VIEW_H
+#define _TraingSetSept_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+#include "components/ui_picker.h"
+
+#include "TraingSetSeptPresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+
+ class TraingSetSeptPresenter;
+ class TraingSetSeptView : public View<TraingSetSeptPresenter>
+ {
+
+ public:
+ TraingSetSeptView();
+ virtual ~TraingSetSeptView();
+ static TraingSetSeptView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingSetSeptView(TraingSetSeptView &&) = delete;
+ TraingSetSeptView &operator=(TraingSetSeptView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIPicker *uiPicker1_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingSetSept_PRESENTER_H
--- /dev/null
+#ifndef _TraingSetTime_PRESENTER_H
+#define _TraingSetTime_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingSetTimeView.h"
+
+namespace OHOS
+{
+ class TraingSetTimeView;
+
+ class TraingSetTimePresenter : public Presenter<TraingSetTimeView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingSetTimePresenter();
+ virtual ~TraingSetTimePresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingSetTimePresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingSetTime_VIEW_H
+#define _TraingSetTime_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+#include "components/ui_picker.h"
+
+#include "TraingSetTimePresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+
+ class TraingSetTimePresenter;
+ class TraingSetTimeView : public View<TraingSetTimePresenter>
+ {
+
+ public:
+ TraingSetTimeView();
+ virtual ~TraingSetTimeView();
+ static TraingSetTimeView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingSetTimeView(TraingSetTimeView &&) = delete;
+ TraingSetTimeView &operator=(TraingSetTimeView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIPicker *uiPicker1_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingSetTime_PRESENTER_H
--- /dev/null
+#ifndef _TraingSet_VIEW_H
+#define _TraingSet_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingSetPresenter.h"
+namespace OHOS
+{
+#define BUTTONTIME "button1"
+#define BUTTONCALULI "button2"
+
+ class TraingSetPresenter;
+ class TraingSetView : public View<TraingSetPresenter>
+ {
+
+ public:
+ TraingSetView();
+ virtual ~TraingSetView();
+ static TraingSetView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingSetView(TraingSetView &&) = delete;
+ TraingSetView &operator=(TraingSetView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UILabel *label5_ = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingSet_PRESENTER_H
--- /dev/null
+#ifndef _TraingStrong_PRESENTER_H
+#define _TraingStrong_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingStrongView.h"
+
+namespace OHOS
+{
+ class TraingStrongView;
+
+ class TraingStrongPresenter : public Presenter<TraingStrongView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingStrongPresenter();
+ virtual ~TraingStrongPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingStrongPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingStrong_VIEW_H
+#define _TraingStrong_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingStrongPresenter.h"
+namespace OHOS
+{
+#define BUTTONNO "button1"
+#define BUTTONYES "button2"
+
+ class TraingStrongPresenter;
+ class TraingStrongView : public View<TraingStrongPresenter>
+ {
+
+ public:
+ TraingStrongView();
+ virtual ~TraingStrongView();
+ static TraingStrongView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ // 通过函数改变
+ void SetLabel();
+ void SetButton();
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingStrongView(TraingStrongView &&) = delete;
+ TraingStrongView &operator=(TraingStrongView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView1_ = nullptr;
+
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UILabel *label5_ = nullptr;
+ UILabel *label6_ = nullptr;
+
+ UIImageView *image1_ = nullptr;
+ UIImageView *image2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UIImageView *image4_ = nullptr;
+ UIImageView *image5_ = nullptr;
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingStrong_PRESENTER_H
#include "ohos_types.h"
#include "components/ui_card_page.h"
+#include "TraingPresenter.h"
namespace OHOS
{
#define BUTTON1 "button1" // 按键1
#define BUTTON3 "button3" // 按键3
#define BUTTONMORE "button4" // 按键 更多
- class TraingView : public UICardPage
+ class TraingPresenter;
+ class TraingView : public View<TraingPresenter>
{
public:
virtual ~TraingView();
static TraingView *GetInstance(void);
- bool InitView();
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void Init();
void DeInit();
- bool AddButton();
- bool InitImage();
- bool InitLable();
-
- void PreLoad(void) override;
- void UnLoad(void) override;
-
- bool LoadImage(UIImageView *view, uint32_t resId);
- bool LoadImage(UILabelButtonExt *view, uint32_t resId);
+ UIView *GetView();
private:
UIView::OnDragListener *draglistener{nullptr};
TraingView(TraingView &&) = delete;
TraingView &operator=(TraingView &&) = delete;
- UILabelButtonExt *Button1 = nullptr;
- UILabelButtonExt *Button2 = nullptr;
- UILabelButtonExt *Button3 = nullptr;
- UILabelButtonExt *ButtonMore = nullptr;
-
- UILabel *titleLabel = nullptr;
- UIImageView *image1 = nullptr;
- UIImageView *image2 = nullptr;
- UIImageView *image3 = nullptr;
- UIImageView *imagemore = nullptr;
-
- bool viewiInitStatus{false};
- bool resLoadStatus{false};
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UIButton *button3_ = nullptr;
+ UIButton *button4_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UIImageView *image3_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UIImageView *image5_ = nullptr;
+ UILabel *label4_ = nullptr;
};
} // namespace OHOS
#endif // Traing_PRESENTER_H
--- /dev/null
+#ifndef _TraingWin_PRESENTER_H
+#define _TraingWin_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingWinView.h"
+
+namespace OHOS
+{
+ class TraingWinView;
+
+ class TraingWinPresenter : public Presenter<TraingWinView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingWinPresenter();
+ virtual ~TraingWinPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingWinPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingWin_VIEW_H
+#define _TraingWin_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingWinPresenter.h"
+namespace OHOS
+{
+#define BUTTONOK "button1"
+
+ class TraingWinPresenter;
+ class TraingWinView : public View<TraingWinPresenter>
+ {
+
+ public:
+ TraingWinView();
+ virtual ~TraingWinView();
+ static TraingWinView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+
+ void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId,int time);
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingWinView(TraingWinView &&) = delete;
+ TraingWinView &operator=(TraingWinView &&) = delete;
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UILabel *label3_ = nullptr;
+ UILabel *label4_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIImageView *image1_ = nullptr;
+ UIImageAnimatorView *imageAnimator;
+ bool viewiInitStatus{false};
+ };
+
+} // namespace OHOS
+#endif // TraingWin_PRESENTER_H
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingCardPresenter.h"\r
+// #include "TraingCardView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingCardPresenter *g_pTraingCardPresenter = nullptr;\r
+\r
+ TraingCardPresenter::TraingCardPresenter()\r
+ {\r
+\r
+ g_pTraingCardPresenter = this;\r
+ }\r
+\r
+ TraingCardPresenter::~TraingCardPresenter()\r
+ {\r
+\r
+ g_pTraingCardPresenter = nullptr;\r
+ }\r
+\r
+ TraingCardPresenter *TraingCardPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingCardPresenter;\r
+ }\r
+\r
+ void TraingCardPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingCardView>::OnStart();\r
+ }\r
+\r
+ void TraingCardPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingCardView>::OnPause();\r
+ }\r
+\r
+ void TraingCardPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingCardView>::OnResume();\r
+ }\r
+\r
+ void TraingCardPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingCardView>::OnStop();\r
+ }\r
+\r
+ bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ // if (strcmp(view.GetViewId(), BUTTONSTOP) == 0)\r
+ // {\r
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ // NativeAbility::GetInstance().\r
+ // }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingCardView.h"\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+\r
+#include "common/screen.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "components/ui_label.h"\r
+#include "font/ui_font.h"\r
+namespace OHOS\r
+{\r
+ static const uint16_t LABEL_FONT_SIZE = 200;\r
+ static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;\r
+ static const uint32_t CARD_PAGE_COLOR = 0xffd0d0d0;\r
+\r
+ static TraingCardView *g_pTraingCardView{nullptr};\r
+\r
+ TraingCardView::TraingCardView()\r
+ {\r
+ g_pTraingCardView = this;\r
+ }\r
+\r
+ TraingCardView::~TraingCardView()\r
+ {\r
+ DeInit();\r
+ g_pTraingCardView = nullptr;\r
+ }\r
+\r
+ TraingCardView *TraingCardView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingCardView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingCardView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x43, 0xff));\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingCardView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingCardPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingCardView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+\r
+ /* InitView:初始化界面*/\r
+ void TraingCardView ::InitView()\r
+ {\r
+ if (swipe_ == nullptr)\r
+ {\r
+ swipe_ = new UISwipeView(UISwipeView::HORIZONTAL);\r
+ swipe_->SetPosition(0, 0, 466, 466);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+ }\r
+\r
+ // 初始化Lable\r
+ InitLabel(label1_, 0, 55, 466, 466, "label1", "训练", DEFAULT_VECTOR_FONT_FILENAME, 200);\r
+ InitLabel(label2_, 0, 55, 466, 466, "label2", "暂停", DEFAULT_VECTOR_FONT_FILENAME, 200);\r
+ InitLabel(label3_, 0, 55, 466, 466, "label3", "结束", DEFAULT_VECTOR_FONT_FILENAME, 200);\r
+\r
+ swipe_->Add(label1_);\r
+ swipe_->Add(label2_);\r
+ swipe_->Add(label3_);\r
+ }\r
+\r
+ /* DeInit:删除组件 */\r
+ void TraingCardView::DeInit()\r
+ {\r
+ UIView *view = static_cast<UISwipeView *>(swipe_)->GetChildrenHead();\r
+ while (view != nullptr)\r
+ {\r
+ UIView *tempView = view;\r
+ view = view->GetNextSibling();\r
+ if (tempView->GetParent())\r
+ {\r
+ static_cast<UISwipeView *>(tempView->GetParent())->Remove(tempView);\r
+ }\r
+ delete tempView;\r
+ }\r
+ delete swipe_;\r
+ swipe_ = nullptr;\r
+ }\r
+\r
+ void TraingCardView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingCardView::OnStart()\r
+ {\r
+ swipe_ = new UISwipeView(UISwipeView::HORIZONTAL);\r
+ if (swipe_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ swipe_->SetPosition(0, 0);\r
+ swipe_->SetWidth(Screen::GetInstance().GetWidth());\r
+ swipe_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingCardPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ swipe_->SetOnDragListener(draglistener);\r
+\r
+ swipe_->SetTouchable(true);\r
+ swipe_->SetDraggable(true);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ swipe_->SetBlankSize(0);\r
+ swipe_->SetReboundSize(200); // 200: rebound size\r
+ swipe_->SetElastic(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(swipe_);\r
+ }\r
+\r
+ void TraingCardView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingCardPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingCardView::OnTearDownView()\r
+ {\r
+ View<TraingCardPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingCardView::OnStop()\r
+ {\r
+ View<TraingCardPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingControlPresenter.h"\r
+// #include "TraingControlView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingControlPresenter *g_pTraingControlPresenter = nullptr;\r
+\r
+ TraingControlPresenter::TraingControlPresenter()\r
+ {\r
+\r
+ g_pTraingControlPresenter = this;\r
+ }\r
+\r
+ TraingControlPresenter::~TraingControlPresenter()\r
+ {\r
+\r
+ g_pTraingControlPresenter = nullptr;\r
+ }\r
+\r
+ TraingControlPresenter *TraingControlPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingControlPresenter;\r
+ }\r
+\r
+ void TraingControlPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingControlView>::OnStart();\r
+ }\r
+\r
+ void TraingControlPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingControlView>::OnPause();\r
+ }\r
+\r
+ void TraingControlPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingControlView>::OnResume();\r
+ }\r
+\r
+ void TraingControlPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingControlView>::OnStop();\r
+ }\r
+\r
+ bool TraingControlPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingControlPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONSTOP) == 0)\r
+ {\r
+ // 模拟训练\r
+ int random = rand() % 100; // 生成一个0~99的随机数\r
+ if (random < 70)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDNOTE2);\r
+ }\r
+ else\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDNOTE);\r
+ }\r
+ }\r
+\r
+ printf("********* test:%s\n", test.c_str());\r
+ if (strcmp(view.GetViewId(), BUTTONPAUSE) == 0)\r
+ {\r
+ // 改变lable文字,button背景图片\r
+ // test如果等于继续那就变为暂停,反之;\r
+ test == "继续" ? test = "暂停" : test = "继续";\r
+ TraingControlView::GetInstance()->SetLabel();\r
+ TraingControlView::GetInstance()->SetButton();\r
+ }\r
+ printf("********* test:%s\n", test.c_str());\r
+ // TraingControlView::GetInstance()->InitView();\r
+\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingControlView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+ static const char *imagePath_point = "/user/res/Training/control_point.bin";\r
+\r
+ static TraingControlView *g_pTraingControlView{nullptr};\r
+\r
+ TraingControlView::TraingControlView()\r
+ {\r
+ g_pTraingControlView = this;\r
+ }\r
+\r
+ TraingControlView::~TraingControlView()\r
+ {\r
+ DeInit();\r
+ g_pTraingControlView = nullptr;\r
+ }\r
+\r
+ TraingControlView *TraingControlView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingControlView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingControlView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingControlView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingControlPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingControlPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingControlView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingControlView ::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
+ // 初始化Button\r
+ InitButton(button1_, 100, 202, 100, 100, BUTTONSTOP);\r
+ // Set additional property\r
+ char *button1defaultImgSrc = BUTTON_STOP_IMG_SRC;\r
+ char *button1triggeredImgSrc = nullptr;\r
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
+ container_->Add(button1_);\r
+\r
+ InitButton(button2_, 255, 202, 100, 100, BUTTONPAUSE);\r
+ // Set additional property\r
+ char *button2defaultImgSrc = BUTTON_PAUSE_IMG_SRC;\r
+ char *button2triggeredImgSrc = nullptr;\r
+ button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);\r
+ container_->Add(button2_);\r
+\r
+ // 初始化Lable\r
+ InitLabel(label1_, 188, 52, 90, 35, "label1", "训练中", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabel(label2_, 98, 110, 60, 35, "label2", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 65);\r
+ InitLabel(label3_, 125, 324, 60, 40, "label3", "结束", DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+ InitLabel(label4_, 280, 324, 60, 40, "label4", "暂停", DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+ container_->Add(label1_);\r
+ container_->Add(label2_);\r
+ container_->Add(label3_);\r
+ container_->Add(label4_);\r
+\r
+ // 初始化Image\r
+ InitImageView(image1_, 193, 421, 80, 20, "image1", imagePath_point);\r
+ container_->Add(image1_);\r
+ }\r
+\r
+ /******************************************************************************************************/\r
+ void TraingControlView::SetLabel()\r
+ {\r
+ if (TraingControlPresenter::GetInstance()->test == "继续")\r
+ {\r
+ label4_->SetText("继续");\r
+ }\r
+ else\r
+ {\r
+ label4_->SetText("暂停");\r
+ }\r
+ }\r
+\r
+ void TraingControlView::SetButton()\r
+ {\r
+ if (TraingControlPresenter::GetInstance()->test == "继续")\r
+ {\r
+ //button2_->SetViewId(BUTTONCONTINUE);\r
+ button2_->SetImageSrc(BUTTON_CONTINUE_IMG_SRC, nullptr);\r
+ }\r
+ if (TraingControlPresenter::GetInstance()->test == "暂停")\r
+ {\r
+ //button2_->SetViewId(BUTTONPAUSE);\r
+ button2_->SetImageSrc(BUTTON_PAUSE_IMG_SRC, nullptr);\r
+ }\r
+ }\r
+ /******************************************************************************************************/\r
+\r
+ /* DeInit:删除组件 */\r
+ void TraingControlView::DeInit()\r
+ {\r
+ // 删除Label\r
+ if (label1_ != nullptr)\r
+ {\r
+ container_->Remove(label1_);\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ if (label2_ != nullptr)\r
+ {\r
+ container_->Remove(label2_);\r
+ delete label2_;\r
+ label2_ = nullptr;\r
+ }\r
+ if (label3_ != nullptr)\r
+ {\r
+ container_->Remove(label3_);\r
+ delete label3_;\r
+ label3_ = nullptr;\r
+ }\r
+ if (label4_ != nullptr)\r
+ {\r
+ container_->Remove(label4_);\r
+ delete label4_;\r
+ label4_ = nullptr;\r
+ }\r
+\r
+ // 删除Button\r
+ if (button1_ != nullptr)\r
+ {\r
+ container_->Remove(button1_);\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+ if (button2_ != nullptr)\r
+ {\r
+ container_->Remove(button2_);\r
+ delete button2_;\r
+ button2_ = nullptr;\r
+ }\r
+\r
+ // 删除Image\r
+ if (image1_ != nullptr)\r
+ {\r
+ container_->Remove(image1_);\r
+ delete image1_;\r
+ image1_ = nullptr;\r
+ }\r
+\r
+ // 删除容器\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll(); // 移除容器中的所有组件\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingControlView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingControlView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingControlPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingControlView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingControlPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingControlView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingControlPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingControlView::OnStop()\r
+ {\r
+ View<TraingControlPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingDataPresenter.h"\r
+// #include "TraingDataView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingDataPresenter *g_pTraingDataPresenter = nullptr;\r
+\r
+ TraingDataPresenter::TraingDataPresenter()\r
+ {\r
+ g_pTraingDataPresenter = this;\r
+ }\r
+\r
+ TraingDataPresenter::~TraingDataPresenter()\r
+ {\r
+ g_pTraingDataPresenter = nullptr;\r
+ }\r
+\r
+ TraingDataPresenter *TraingDataPresenter::GetInstance()\r
+ {\r
+ return g_pTraingDataPresenter;\r
+ }\r
+\r
+ void TraingDataPresenter::OnStart()\r
+ {\r
+ Presenter<TraingDataView>::OnStart();\r
+ }\r
+\r
+ void TraingDataPresenter::OnPause(void)\r
+ {\r
+ Presenter<TraingDataView>::OnPause();\r
+ }\r
+\r
+ void TraingDataPresenter::OnResume(void)\r
+ {\r
+ Presenter<TraingDataView>::OnResume();\r
+ }\r
+\r
+ void TraingDataPresenter::OnStop(void)\r
+ {\r
+ Presenter<TraingDataView>::OnStop();\r
+ }\r
+\r
+ bool TraingDataPresenter::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_TRAININGCONTROL);\r
+ }\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDETAIL);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingDataPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONNOTE) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSTRONG);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingDataView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+ static const char *imagePath_point = "/user/res/Training/data_point.bin";\r
+ static const char *imagePath_progress = "/user/res/Training/progress.bin";\r
+ static const char *imagePath_incoup = "/user/res/Training/inco_up.bin";\r
+ static const char *imagePath_arrows = "/user/res/Training/arrows.bin";\r
+ static const char *imagePath_strength = "/user/res/Training/sport-strength.bin";\r
+ static const char *imagePath_note = "/user/res/Training/note.bin";\r
+\r
+ static TraingDataView *g_pTraingDataView{nullptr};\r
+\r
+ TraingDataView::TraingDataView()\r
+ {\r
+ g_pTraingDataView = this;\r
+ }\r
+\r
+ TraingDataView::~TraingDataView()\r
+ {\r
+ DeInit();\r
+ g_pTraingDataView = nullptr;\r
+ }\r
+\r
+ TraingDataView *TraingDataView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingDataView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingDataView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingDataView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingDataPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingDataPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingDataView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingDataView ::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
+ // 初始化Image\r
+ InitImageView(image1_, 13, 13, 440, 386, "image1", imagePath_progress);\r
+ InitImageView(image2_, 208, 297, 20, 20, "image2", imagePath_arrows);\r
+ InitImageView(image3_, 98, 314, 270, 20, "image3", imagePath_strength);\r
+ InitImageView(image4_, 225, 396, 16, 10, "image4", imagePath_incoup);\r
+ InitImageView(image5_, 193, 421, 80, 20, "image5", imagePath_point);\r
+ container_->Add(image1_);\r
+ container_->Add(image2_);\r
+ container_->Add(image3_);\r
+ container_->Add(image4_);\r
+ container_->Add(image5_);\r
+ // 初始化Lable\r
+ InitLabel(label1_, 185, 60, 90, 35, "label1", "23:54", DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+ InitLabel(label2_, 158, 120, 150, 35, "label2", "跳绳运动中", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabel(label3_, 90, 175, 60, 40, "label3", "00:31:26", DEFAULT_VECTOR_FONT_FILENAME, 80);\r
+ InitLabel(label4_, 150, 276, 60, 40, "label4", "144", DEFAULT_VECTOR_FONT_FILENAME, 23);\r
+ InitLabel(label5_, 167, 350, 60, 40, "label4", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ container_->Add(label1_);\r
+ container_->Add(label2_);\r
+ container_->Add(label3_);\r
+ container_->Add(label4_);\r
+ container_->Add(label5_);\r
+ // 初始化Button\r
+ InitButton(button1_, 275, 350, 26, 26, BUTTONNOTE);\r
+ // Set additional property\r
+ static const char *button1defaultImgSrc = imagePath_note;\r
+ char *button1triggeredImgSrc = nullptr;\r
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
+ container_->Add(button1_);\r
+ }\r
+\r
+ /* DeInit:删除组件 */\r
+ void TraingDataView::DeInit()\r
+ {\r
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();\r
+ while (view != nullptr)\r
+ {\r
+ UIView *tempView = view;\r
+ view = view->GetNextSibling();\r
+ if (tempView->GetParent())\r
+ {\r
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);\r
+ }\r
+ delete tempView;\r
+ }\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+\r
+ void TraingDataView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingDataView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingDataPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingDataView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingDataPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingDataView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingDataPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingDataView::OnStop()\r
+ {\r
+ View<TraingDataPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingDetailPresenter.h"\r
+// #include "TraingDetailView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingDetailPresenter *g_pTraingDetailPresenter = nullptr;\r
+\r
+ TraingDetailPresenter::TraingDetailPresenter()\r
+ {\r
+\r
+ g_pTraingDetailPresenter = this;\r
+ }\r
+\r
+ TraingDetailPresenter::~TraingDetailPresenter()\r
+ {\r
+\r
+ g_pTraingDetailPresenter = nullptr;\r
+ }\r
+\r
+ TraingDetailPresenter *TraingDetailPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingDetailPresenter;\r
+ }\r
+\r
+ void TraingDetailPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingDetailView>::OnStart();\r
+ }\r
+\r
+ void TraingDetailPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingDetailView>::OnPause();\r
+ }\r
+\r
+ void TraingDetailPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingDetailView>::OnResume();\r
+ }\r
+\r
+ void TraingDetailPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingDetailView>::OnStop();\r
+ }\r
+\r
+ bool TraingDetailPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingDetailPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingDetailView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+ static const char *imagePath_heartrate = "/user/res/Training/heartrat_30.bin";\r
+ static const char *imagePath_mileage = "/user/res/Training/mileage_30.bin";\r
+ static const char *imagePath_step = "/user/res/Training/step_30.bin";\r
+ static const char *imagePath_calories = "/user/res/Training/calories_30.bin";\r
+ static const char *imagePath_line1 = "/user/res/Training/Line 1.bin";\r
+ static const char *imagePath_line2 = "/user/res/Training/Line 2.bin";\r
+\r
+ static TraingDetailView *g_pTraingDetailView{nullptr};\r
+\r
+ TraingDetailView::TraingDetailView()\r
+ {\r
+ g_pTraingDetailView = this;\r
+ }\r
+\r
+ TraingDetailView::~TraingDetailView()\r
+ {\r
+ DeInit();\r
+ g_pTraingDetailView = nullptr;\r
+ }\r
+\r
+ TraingDetailView *TraingDetailView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingDetailView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingDetailView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingDetailView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingDetailPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingDetailPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingDetailView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingDetailView ::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
+ // 初始化Image\r
+ InitImageView(image1_, 134, 58, 30, 30, "image1", imagePath_heartrate);\r
+ InitImageView(image2_, 44, 189, 30, 30, "image2", imagePath_mileage);\r
+ InitImageView(image3_, 297, 189, 30, 30, "image3", imagePath_step);\r
+ InitImageView(image4_, 129, 335, 30, 30, "image4", imagePath_calories);\r
+ InitImageView(image5_, 0, 160, 10, 466, "image5", imagePath_line1);\r
+ InitImageView(image6_, 233, 193, 80, 20, "image5", imagePath_line2);\r
+ InitImageView(image7_, 0, 306, 10, 466, "image5", imagePath_line1);\r
+ container_->Add(image1_);\r
+ container_->Add(image2_);\r
+ container_->Add(image3_);\r
+ container_->Add(image4_);\r
+ container_->Add(image5_);\r
+ container_->Add(image6_);\r
+ container_->Add(image7_);\r
+ // 初始化Lable\r
+ InitLabel(label1_, 174, 60, 90, 35, "label1", "心率(次/分)", DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ InitLabel(label2_, 80, 190, 60, 40, "label2", "距离(公里)", DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ InitLabel(label3_, 332, 189, 60, 40, "label3", "步数", DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ InitLabel(label4_, 167, 336, 60, 40, "label4", "卡路里(千卡)", DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ InitLabel(label5_, 202, 94, 60, 40, "label5", "144", DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+ InitLabel(label6_, 76, 233, 60, 40, "label6", "13.21", DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+ InitLabel(label7_, 300, 233, 60, 40, "label7", "28312", DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+ InitLabel(label8_, 175, 376, 60, 40, "label8", "210.03", DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+ container_->Add(label1_);\r
+ container_->Add(label2_);\r
+ container_->Add(label3_);\r
+ container_->Add(label4_);\r
+ container_->Add(label5_);\r
+ container_->Add(label6_);\r
+ container_->Add(label7_);\r
+ container_->Add(label8_);\r
+ }\r
+\r
+ /* DeInit:删除组件 */\r
+ void TraingDetailView::DeInit()\r
+ {\r
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();\r
+ while (view != nullptr)\r
+ {\r
+ UIView *tempView = view;\r
+ view = view->GetNextSibling();\r
+ if (tempView->GetParent())\r
+ {\r
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);\r
+ }\r
+ delete tempView;\r
+ }\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+\r
+ void TraingDetailView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingDetailView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingDetailPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingDetailView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingDetailPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingDetailView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingDetailPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingDetailView::OnStop()\r
+ {\r
+ View<TraingDetailPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingEnddataPresenter.h"
+// #include "TraingEnddataView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingEnddataPresenter *g_pTraingEnddataPresenter = nullptr;
+
+ TraingEnddataPresenter::TraingEnddataPresenter()
+ {
+
+ g_pTraingEnddataPresenter = this;
+ }
+
+ TraingEnddataPresenter::~TraingEnddataPresenter()
+ {
+
+ g_pTraingEnddataPresenter = nullptr;
+ }
+
+ TraingEnddataPresenter *TraingEnddataPresenter::GetInstance()
+ {
+
+ return g_pTraingEnddataPresenter;
+ }
+
+ void TraingEnddataPresenter::OnStart()
+ {
+
+ Presenter<TraingEnddataView>::OnStart();
+ }
+
+ void TraingEnddataPresenter::OnPause(void)
+ {
+
+ Presenter<TraingEnddataView>::OnPause();
+ }
+
+ void TraingEnddataPresenter::OnResume(void)
+ {
+
+ Presenter<TraingEnddataView>::OnResume();
+ }
+
+ void TraingEnddataPresenter::OnStop(void)
+ {
+
+ Presenter<TraingEnddataView>::OnStop();
+ }
+
+ bool TraingEnddataPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingEnddataPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONBACK) == 0)
+ {
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingEnddataView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_path = "/user/res/Training/path.bin";
+ static const char *imagePath_bubble = "/user/res/Training/bubble.bin";
+ static const char *imagePath_bubblepiont = "/user/res/Training/bubble_piont.bin";
+ static const char *imagePath_Line = "/user/res/Training/Line.bin";
+ static const char *imagePath_spot = "/user/res/Training/Walking_54.bin";
+ static const char *imagePath_incoup = "/user/res/Training/inco_up_40.bin";
+
+ static TraingEnddataView *g_pTraingEnddataView{nullptr};
+
+ TraingEnddataView::TraingEnddataView()
+ {
+ g_pTraingEnddataView = this;
+ }
+
+ TraingEnddataView::~TraingEnddataView()
+ {
+ DeInit();
+ g_pTraingEnddataView = nullptr;
+ }
+
+ TraingEnddataView *TraingEnddataView::GetInstance()
+ {
+
+ return g_pTraingEnddataView;
+ }
+
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingEnddataView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label1_->SetTextColor(Color::GetColorFromRGBA(0x22, 0x9d, 0xd3, 0xff));
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingEnddataView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingEnddataPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingEnddataPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingEnddataView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingEnddataView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // Add ScrollView to App
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position
+ scrollView1_->Resize(466, 466); // widget's width and height
+ scrollView1_->SetViewId("scrollView1"); // Set style
+ scrollView1_->SetReboundSize(100);
+ scrollView1_->SetScrollBlankSize(35);
+ scrollView1_->SetHorizontalScrollState(false);
+ // Add to rootView
+ container_->Add(scrollView1_);
+ scrollView1_->SetVisible(true);
+
+ // 初始化Image
+ InitImageView(image1_, 200, 131, 80, 48, "image1", imagePath_bubble);
+ InitImageView(image2_, 230, 183, 20, 20, "image2", imagePath_bubblepiont);
+ InitImageView(image3_, 96, 118, 271, 233, "image3", imagePath_path);
+ InitImageView(image4_, 212, 402, 40, 40, "image4", imagePath_incoup);
+ InitImageView(image5_, 80, 470, 54, 80, "image5", imagePath_spot);
+ InitImageView(image6_, 97, 552, 80, 20, "image6", imagePath_Line);
+ InitImageView(image8_, 97, 682, 80, 20, "image6", imagePath_Line);
+ InitImageView(image9_, 97, 812, 80, 20, "image6", imagePath_Line);
+ InitImageView(image10_, 97, 942, 80, 20, "image6", imagePath_Line);
+ InitImageView(image11_, 97, 1072, 80, 20, "image6", imagePath_Line);
+
+ scrollView1_->Add(image3_);
+ scrollView1_->Add(image6_);
+ scrollView1_->Add(image8_);
+ scrollView1_->Add(image9_);
+ scrollView1_->Add(image10_);
+ scrollView1_->Add(image11_);
+ scrollView1_->Add(image1_);
+ scrollView1_->Add(image2_);
+ scrollView1_->Add(image4_);
+ scrollView1_->Add(image5_);
+
+ // 初始化button
+ InitButton(button1_, 42, 1319, 380, 100, BUTTONBACK);
+ scrollView1_->Add(button1_);
+
+ // 初始化Lable
+ InitLabel(label1_, 188, 52, 90, 35, "label1", "健身类", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 220, 140, 60, 40, "label2", "达标", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label3_, 114, 252, 60, 40, "label3", "终", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label4_, 172, 284, 60, 40, "label4", "起", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label5_, 155, 372, 60, 40, "label5", "距离:8.3KM", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label6_, 146, 478, 60, 40, "label6", "健走", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label7_, 146, 517, 60, 40, "label7", "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
+
+ InitLabel(label8_, 146, 590, 60, 40, "label8", "目标完成度", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label9_, 146, 720, 60, 40, "label9", "训练时长", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label10_, 146, 850, 60, 40, "label10", "距离(米)", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label11_, 146, 980, 60, 40, "label11", "平均心率(次/分)", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label12_, 146, 1110, 60, 40, "label2", "训练强度", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label18_, 155, 1232, 60, 40, "label8", "更多数据请前往手机\nAPP“小希爱玩”查看", DEFAULT_VECTOR_FONT_FILENAME, 26);
+
+ label7_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label8_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label9_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label10_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label11_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label12_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ label18_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+
+ InitLabel(label13_, 146, 626, 60, 40, "label18", "226%", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ label13_->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ InitLabel(label14_, 146, 756, 60, 40, "label14", "05:45:46", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ label14_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff));
+ InitLabel(label15_, 146, 886, 60, 40, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ label15_->SetTextColor(Color::GetColorFromRGBA(0x36, 0x4a, 0xff, 0xff));
+ InitLabel(label16_, 146, 1016, 60, 40, "label16", "144", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ label16_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
+ InitLabel(label17_, 146, 1146, 60, 40, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ label17_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
+ InitLabel(label19_, 201, 1348, 60, 40, "label19", "关闭", DEFAULT_VECTOR_FONT_FILENAME, 31);
+
+ scrollView1_->Add(label1_);
+ scrollView1_->Add(label2_);
+ scrollView1_->Add(label3_);
+ scrollView1_->Add(label4_);
+ scrollView1_->Add(label5_);
+ scrollView1_->Add(label6_);
+ scrollView1_->Add(label7_);
+ scrollView1_->Add(label8_);
+ scrollView1_->Add(label9_);
+ scrollView1_->Add(label10_);
+ scrollView1_->Add(label11_);
+ scrollView1_->Add(label12_);
+ scrollView1_->Add(label13_);
+ scrollView1_->Add(label14_);
+ scrollView1_->Add(label15_);
+ scrollView1_->Add(label16_);
+ scrollView1_->Add(label17_);
+ scrollView1_->Add(label18_);
+ scrollView1_->Add(label19_);
+
+ // Add ImageView to App
+ if (image7_ == nullptr)
+ {
+ image7_ = new UIImageView();
+ }
+ image7_->SetPosition(188, 1460); // widget's left position and top position
+ image7_->Resize(100, 100); // widget's width and height
+ image7_->SetViewId("image7"); // Set style
+ // Add to rootView
+ scrollView1_->Add(image7_);
+ image7_->SetVisible(true);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingEnddataView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingEnddataView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingEnddataView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingEnddataPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingEnddataView::OnSetUpView()
+ {
+
+ View<TraingEnddataPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingEnddataView::OnTearDownView()
+ {
+
+ View<TraingEnddataPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingEnddataView::OnStop()
+ {
+ View<TraingEnddataPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingEndnote2Presenter.h"
+// #include "TraingEndnote2View.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingEndnote2Presenter *g_pTraingEndnote2Presenter = nullptr;
+
+ TraingEndnote2Presenter::TraingEndnote2Presenter()
+ {
+
+ g_pTraingEndnote2Presenter = this;
+ }
+
+ TraingEndnote2Presenter::~TraingEndnote2Presenter()
+ {
+
+ g_pTraingEndnote2Presenter = nullptr;
+ }
+
+ TraingEndnote2Presenter *TraingEndnote2Presenter::GetInstance()
+ {
+
+ return g_pTraingEndnote2Presenter;
+ }
+
+ void TraingEndnote2Presenter::OnStart()
+ {
+
+ Presenter<TraingEndnote2View>::OnStart();
+ }
+
+ void TraingEndnote2Presenter::OnPause(void)
+ {
+
+ Presenter<TraingEndnote2View>::OnPause();
+ }
+
+ void TraingEndnote2Presenter::OnResume(void)
+ {
+
+ Presenter<TraingEndnote2View>::OnResume();
+ }
+
+ void TraingEndnote2Presenter::OnStop(void)
+ {
+
+ Presenter<TraingEndnote2View>::OnStop();
+ }
+
+ bool TraingEndnote2Presenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingEndnote2Presenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONNO) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL);
+ }
+ if (strcmp(view.GetViewId(), BUTTONYES) == 0)
+ {
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingEndnote2View.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_no = "/user/res/Training/no.bin";
+ static const char *imagePath_yes = "/user/res/Training/yes.bin";
+
+ static TraingEndnote2View *g_pTraingEndnote2View{nullptr};
+
+ TraingEndnote2View::TraingEndnote2View()
+ {
+ g_pTraingEndnote2View = this;
+ }
+
+ TraingEndnote2View::~TraingEndnote2View()
+ {
+ DeInit();
+ g_pTraingEndnote2View = nullptr;
+ }
+
+ TraingEndnote2View *TraingEndnote2View::GetInstance()
+ {
+
+ return g_pTraingEndnote2View;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingEndnote2View::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingEndnote2View::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingEndnote2Presenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingEndnote2Presenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingEndnote2View::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingEndnote2View ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 203, 52, 90, 35, "label1", "注意", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 56, 167, 60, 40, "label2", "当前运动量太小,无法记录\n是否结束运动", DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ container_->Add(label1_);
+ container_->Add(label2_);
+
+ InitButton(button1_, 111, 299, 100, 100, BUTTONNO);
+ // Set additional property
+ const char *button1defaultImgSrc = imagePath_no;
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+
+ InitButton(button2_, 256, 299, 100, 100, BUTTONYES);
+ // Set additional property
+ const char *button2defaultImgSrc = imagePath_yes;
+ char *button2triggeredImgSrc = nullptr;
+ button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);
+
+ container_->Add(button1_);
+ container_->Add(button2_);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingEndnote2View::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingEndnote2View::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingEndnote2View::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingEndnote2Presenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingEndnote2View::OnSetUpView()
+ {
+
+ View<TraingEndnote2Presenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingEndnote2View::OnTearDownView()
+ {
+
+ View<TraingEndnote2Presenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingEndnote2View::OnStop()
+ {
+ View<TraingEndnote2Presenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingEndnotePresenter.h"
+// #include "TraingEndnoteView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingEndnotePresenter *g_pTraingEndnotePresenter = nullptr;
+
+ TraingEndnotePresenter::TraingEndnotePresenter()
+ {
+
+ g_pTraingEndnotePresenter = this;
+ }
+
+ TraingEndnotePresenter::~TraingEndnotePresenter()
+ {
+
+ g_pTraingEndnotePresenter = nullptr;
+ }
+
+ TraingEndnotePresenter *TraingEndnotePresenter::GetInstance()
+ {
+
+ return g_pTraingEndnotePresenter;
+ }
+
+ void TraingEndnotePresenter::OnStart()
+ {
+
+ Presenter<TraingEndnoteView>::OnStart();
+ }
+
+ void TraingEndnotePresenter::OnPause(void)
+ {
+
+ Presenter<TraingEndnoteView>::OnPause();
+ }
+
+ void TraingEndnotePresenter::OnResume(void)
+ {
+
+ Presenter<TraingEndnoteView>::OnResume();
+ }
+
+ void TraingEndnotePresenter::OnStop(void)
+ {
+
+ Presenter<TraingEndnoteView>::OnStop();
+ }
+
+ bool TraingEndnotePresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingEndnotePresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONNO) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL);
+ }
+ if (strcmp(view.GetViewId(), BUTTONYES) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGWIN);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingEndnoteView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_no = "/user/res/Training/no.bin";
+ static const char *imagePath_yes = "/user/res/Training/yes.bin";
+
+ static TraingEndnoteView *g_pTraingEndnoteView{nullptr};
+
+ TraingEndnoteView::TraingEndnoteView()
+ {
+ g_pTraingEndnoteView = this;
+ }
+
+ TraingEndnoteView::~TraingEndnoteView()
+ {
+ DeInit();
+ g_pTraingEndnoteView = nullptr;
+ }
+
+ TraingEndnoteView *TraingEndnoteView::GetInstance()
+ {
+
+ return g_pTraingEndnoteView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingEndnoteView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingEndnoteView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingEndnotePresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingEndnotePresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingEndnoteView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingEndnoteView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 173, 52, 90, 35, "label1", "结束运动", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 116, 187, 60, 40, "label2", "是否结束本次运动", DEFAULT_VECTOR_FONT_FILENAME, 26);
+
+ container_->Add(label1_);
+ container_->Add(label2_);
+
+ InitButton(button1_, 111, 299, 100, 100, BUTTONNO);
+ // Set additional property
+ const char *button1defaultImgSrc = imagePath_no;
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+
+ InitButton(button2_, 256, 299, 100, 100, BUTTONYES);
+ // Set additional property
+ const char *button2defaultImgSrc = imagePath_yes;
+ char *button2triggeredImgSrc = nullptr;
+ button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);
+
+ container_->Add(button1_);
+ container_->Add(button2_);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingEndnoteView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingEndnoteView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingEndnoteView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingEndnotePresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingEndnoteView::OnSetUpView()
+ {
+
+ View<TraingEndnotePresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingEndnoteView::OnTearDownView()
+ {
+
+ View<TraingEndnotePresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingEndnoteView::OnStop()
+ {
+ View<TraingEndnotePresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSPresenter.h"
+// #include "TraingGPSView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSPresenter *g_pTraingGPSPresenter = nullptr;
+
+ TraingGPSPresenter::TraingGPSPresenter()
+ {
+
+ g_pTraingGPSPresenter = this;
+ }
+
+ TraingGPSPresenter::~TraingGPSPresenter()
+ {
+
+ g_pTraingGPSPresenter = nullptr;
+ }
+
+ TraingGPSPresenter *TraingGPSPresenter::GetInstance()
+ {
+
+ return g_pTraingGPSPresenter;
+ }
+
+ void TraingGPSPresenter::OnStart()
+ {
+
+ Presenter<TraingGPSView>::OnStart();
+ }
+
+ void TraingGPSPresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSView>::OnPause();
+ }
+
+ void TraingGPSPresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSView>::OnResume();
+ }
+
+ void TraingGPSPresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSView>::OnStop();
+ }
+
+ bool TraingGPSPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONSET) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET);
+ }
+ if (strcmp(view.GetViewId(), BUTTONGO) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_heartrate = "/user/res/Training/heartrate_1.bin";
+ static const char *imagePath_GPS = "/user/res/Training/GPS_1.bin";
+ static TraingGPSView *g_pTraingGPSView{nullptr};
+
+ TraingGPSView::TraingGPSView()
+ {
+ g_pTraingGPSView = this;
+ }
+
+ TraingGPSView::~TraingGPSView()
+ {
+ DeInit();
+ g_pTraingGPSView = nullptr;
+ }
+
+ TraingGPSView *TraingGPSView::GetInstance()
+ {
+
+ return g_pTraingGPSView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingGPSView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 203, 52, 195, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label1_);
+ InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label2_);
+ InitLabel(label3_, 41, 237, 54, 41, "lable3", "144", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label3_);
+ InitLabel(label4_, 361, 237, 54, 41, "lable4", "GPS", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label4_);
+ // 初始化image
+ InitImageView(image1_, 48, 193, 40, 40, "image1", imagePath_heartrate);
+ InitImageView(image2_, 375, 193, 40, 40, "image2", imagePath_GPS);
+ container_->Add(image1_);
+ container_->Add(image2_);
+ // 初始化Button
+ InitButton(button1_, 133, 133, 200, 200, BUTTONGO);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/Go.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+
+ InitButton(button2_, 160, 370, 146, 35, BUTTONSET);
+ button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键
+ button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+ button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明
+
+ container_->Add(button1_);
+ container_->Add(button2_);
+ }
+ /* DeInit:删除组件*/
+ void TraingGPSView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSView::OnSetUpView()
+ {
+
+ View<TraingGPSPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSView::OnTearDownView()
+ {
+
+ View<TraingGPSPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSView::OnStop()
+ {
+ View<TraingGPSPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSbackPresenter.h"
+// #include "TraingGPSbackView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSbackPresenter *g_pTraingGPSbackPresenter = nullptr;
+
+ TraingGPSbackPresenter::TraingGPSbackPresenter()
+ {
+
+ g_pTraingGPSbackPresenter = this;
+ }
+
+ TraingGPSbackPresenter::~TraingGPSbackPresenter()
+ {
+
+ g_pTraingGPSbackPresenter = nullptr;
+ }
+
+ TraingGPSbackPresenter *TraingGPSbackPresenter::GetInstance()
+ {
+
+ return g_pTraingGPSbackPresenter;
+ }
+
+ void TraingGPSbackPresenter::OnStart()
+ {
+
+ Presenter<TraingGPSbackView>::OnStart();
+ }
+
+ void TraingGPSbackPresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSbackView>::OnPause();
+ }
+
+ void TraingGPSbackPresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSbackView>::OnResume();
+ }
+
+ void TraingGPSbackPresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSbackView>::OnStop();
+ }
+
+ bool TraingGPSbackPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ // {
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(preSlice);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSbackPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSbackView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_warning = "/user/res/Training/back.bin";
+ static TraingGPSbackView *g_pTraingGPSbackView{nullptr};
+
+ TraingGPSbackView::TraingGPSbackView()
+ {
+ g_pTraingGPSbackView = this;
+ }
+
+ TraingGPSbackView::~TraingGPSbackView()
+ {
+ DeInit();
+ g_pTraingGPSbackView = nullptr;
+ }
+
+ TraingGPSbackView *TraingGPSbackView::GetInstance()
+ {
+
+ return g_pTraingGPSbackView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSbackView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSbackView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSbackPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSbackPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSbackView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingGPSbackView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 175, 52, 195, 35, "label1", "GPS连接", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label1_);
+ InitLabel(label2_, 55, 253, 146, 35, "label2", "GPS已连接,当前信号正常", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label2_);
+
+ // 初始化image
+ InitImageView(image1_, 193, 140, 40, 40, "image1", imagePath_warning);
+ container_->Add(image1_);
+
+ // 初始化Button
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+ container_->Add(button1_);
+
+ }
+ /* DeInit:删除组件*/
+ void TraingGPSbackView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSbackView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSbackView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSbackPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSbackView::OnSetUpView()
+ {
+
+ View<TraingGPSbackPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSbackView::OnTearDownView()
+ {
+
+ View<TraingGPSbackPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSbackView::OnStop()
+ {
+ View<TraingGPSbackPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2023-12-12 16:55:28
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-16 15:44:47
+ * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/traing/src/TraingGPSlackPresenter.cpp
+ * @Description:
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
+ */
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSlackPresenter.h"
+// #include "TraingGPSlackView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSlackPresenter *g_pTraingGPSlackPresenter = nullptr;
+
+ TraingGPSlackPresenter::TraingGPSlackPresenter()
+ {
+
+ g_pTraingGPSlackPresenter = this;
+ }
+
+ TraingGPSlackPresenter::~TraingGPSlackPresenter()
+ {
+
+ g_pTraingGPSlackPresenter = nullptr;
+ }
+
+ TraingGPSlackPresenter *TraingGPSlackPresenter::GetInstance()
+ {
+
+ return g_pTraingGPSlackPresenter;
+ }
+
+ void TraingGPSlackPresenter::OnStart()
+ {
+
+ Presenter<TraingGPSlackView>::OnStart();
+ }
+
+ void TraingGPSlackPresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSlackView>::OnPause();
+ }
+
+ void TraingGPSlackPresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSlackView>::OnResume();
+ }
+
+ void TraingGPSlackPresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSlackView>::OnStop();
+ }
+
+ bool TraingGPSlackPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSlackPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONSET) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET);
+ }
+ if (strcmp(view.GetViewId(), BUTTONGO) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSNOTE);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSlackView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_heartrate = "/user/res/Training/heartrate_2.bin";
+ static const char *imagePath_GPS = "/user/res/Training/GPS_2.bin";
+ static TraingGPSlackView *g_pTraingGPSlackView{nullptr};
+
+ TraingGPSlackView::TraingGPSlackView()
+ {
+ g_pTraingGPSlackView = this;
+ }
+
+ TraingGPSlackView::~TraingGPSlackView()
+ {
+ DeInit();
+ g_pTraingGPSlackView = nullptr;
+ }
+
+ TraingGPSlackView *TraingGPSlackView::GetInstance()
+ {
+
+ return g_pTraingGPSlackView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSlackView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSlackView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSlackPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSlackPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSlackView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingGPSlackView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 203, 52, 195, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label1_);
+ InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label2_);
+ InitLabel(label3_, 41, 237, 54, 41, "lable3", "--", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label3_);
+ InitLabel(label4_, 361, 237, 54, 41, "lable4", "--", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label4_);
+ // 初始化image
+ InitImageView(image1_, 48, 193, 40, 40, "image1", imagePath_heartrate);
+ InitImageView(image2_, 375, 193, 40, 40, "image2", imagePath_GPS);
+ container_->Add(image1_);
+ container_->Add(image2_);
+ // 初始化Button
+ InitButton(button1_, 133, 133, 200, 200, BUTTONGO);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/Go_2.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+
+ InitButton(button2_, 160, 370, 146, 35, BUTTONSET);
+ button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键
+ button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+ button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明
+
+ container_->Add(button1_);
+ container_->Add(button2_);
+ }
+ /* DeInit:删除组件*/
+ void TraingGPSlackView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSlackView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSlackView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSlackPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSlackView::OnSetUpView()
+ {
+
+ View<TraingGPSlackPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSlackView::OnTearDownView()
+ {
+
+ View<TraingGPSlackPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSlackView::OnStop()
+ {
+ View<TraingGPSlackPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSlostPresenter.h"
+// #include "TraingGPSlostView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSlostPresenter *g_pTraingGPSlostPresenter = nullptr;
+
+ TraingGPSlostPresenter::TraingGPSlostPresenter()
+ {
+
+ g_pTraingGPSlostPresenter = this;
+ }
+
+ TraingGPSlostPresenter::~TraingGPSlostPresenter()
+ {
+
+ g_pTraingGPSlostPresenter = nullptr;
+ }
+
+ TraingGPSlostPresenter *TraingGPSlostPresenter::GetInstance()
+ {
+
+ return g_pTraingGPSlostPresenter;
+ }
+
+ void TraingGPSlostPresenter::OnStart()
+ {
+
+ Presenter<TraingGPSlostView>::OnStart();
+ }
+
+ void TraingGPSlostPresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSlostView>::OnPause();
+ }
+
+ void TraingGPSlostPresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSlostView>::OnResume();
+ }
+
+ void TraingGPSlostPresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSlostView>::OnStop();
+ }
+
+ bool TraingGPSlostPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ // {
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(preSlice);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSlostPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSBACK);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSlostView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_warning = "/user/res/Training/warning.bin";
+ static TraingGPSlostView *g_pTraingGPSlostView{nullptr};
+
+ TraingGPSlostView::TraingGPSlostView()
+ {
+ g_pTraingGPSlostView = this;
+ }
+
+ TraingGPSlostView::~TraingGPSlostView()
+ {
+ DeInit();
+ g_pTraingGPSlostView = nullptr;
+ }
+
+ TraingGPSlostView *TraingGPSlostView::GetInstance()
+ {
+
+ return g_pTraingGPSlostView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSlostView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSlostView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSlostPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSlostPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSlostView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingGPSlostView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 175, 52, 195, 35, "label1", "GPS丢失", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label1_);
+ InitLabel(label2_, 55, 253, 146, 35, "label2", "当前位置搜索不到GPS信号", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label2_);
+
+ // 初始化image
+ InitImageView(image1_, 193, 140, 40, 40, "image1", imagePath_warning);
+ container_->Add(image1_);
+
+ // 初始化Button
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+ container_->Add(button1_);
+
+ }
+ /* DeInit:删除组件*/
+ void TraingGPSlostView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSlostView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSlostView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSlostPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSlostView::OnSetUpView()
+ {
+
+ View<TraingGPSlostPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSlostView::OnTearDownView()
+ {
+
+ View<TraingGPSlostPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSlostView::OnStop()
+ {
+ View<TraingGPSlostPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSnotePresenter.h"
+// #include "TraingGPSnoteView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSnotePresenter *g_pTraingGPSnotePresenter = nullptr;
+
+ TraingGPSnotePresenter::TraingGPSnotePresenter()
+ {
+
+ g_pTraingGPSnotePresenter = this;
+ }
+
+ TraingGPSnotePresenter::~TraingGPSnotePresenter()
+ {
+
+ g_pTraingGPSnotePresenter = nullptr;
+ }
+
+ TraingGPSnotePresenter *TraingGPSnotePresenter::GetInstance()
+ {
+
+ return g_pTraingGPSnotePresenter;
+ }
+
+ void TraingGPSnotePresenter::OnStart()
+ {
+
+ Presenter<TraingGPSnoteView>::OnStart();
+ }
+
+ void TraingGPSnotePresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSnoteView>::OnPause();
+ }
+
+ void TraingGPSnotePresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSnoteView>::OnResume();
+ }
+
+ void TraingGPSnotePresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSnoteView>::OnStop();
+ }
+
+ bool TraingGPSnotePresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(preSlice);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSnotePresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONBACK) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSLACK);
+ }
+ if (strcmp(view.GetViewId(), BUTTONGO) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSLOST);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSnoteView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_warning = "/user/res/Training/warning.bin";
+
+ static TraingGPSnoteView *g_pTraingGPSnoteView{nullptr};
+
+ TraingGPSnoteView::TraingGPSnoteView()
+ {
+ g_pTraingGPSnoteView = this;
+ }
+
+ TraingGPSnoteView::~TraingGPSnoteView()
+ {
+ DeInit();
+ g_pTraingGPSnoteView = nullptr;
+ }
+
+ TraingGPSnoteView *TraingGPSnoteView::GetInstance()
+ {
+
+ return g_pTraingGPSnoteView;
+ }
+
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSnoteView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label1_->SetTextColor(Color::GetColorFromRGBA(0x22, 0x9d, 0xd3, 0xff));
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSnoteView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSnotePresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSnotePresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSnoteView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingGPSnoteView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // Add ScrollView to App
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position
+ scrollView1_->Resize(466, 466); // widget's width and height
+ scrollView1_->SetViewId("scrollView1"); // Set style
+ scrollView1_->SetReboundSize(100);
+ scrollView1_->SetScrollBlankSize(52);
+ scrollView1_->SetHorizontalScrollState(false);
+ // Add to rootView
+ container_->Add(scrollView1_);
+ scrollView1_->SetVisible(true);
+
+ // 初始化Image
+ InitImageView(image1_, 193, 111, 80, 80, "image1", imagePath_warning);
+ scrollView1_->Add(image1_);
+
+ // 初始化button
+ InitButton(button1_, 118, 334, 230, 80, BUTTONBACK);
+ button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c);
+ scrollView1_->Add(button1_);
+
+ InitButton(button2_, 118, 434, 230, 80, BUTTONGO);
+ scrollView1_->Add(button2_);
+
+ // 初始化Lable
+ InitLabel(label1_, 160, 52, 90, 35, "label1", "GPS未准备", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 33, 215, 60, 40, "label2", "GPS仍在定位,建议等待定位\n完成后再开始训练", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label3_, 181, 357, 60, 40, "label3", "继续等待", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label4_, 181, 457, 60, 40, "label4", "直接开始", DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ scrollView1_->Add(label1_);
+ scrollView1_->Add(label2_);
+ scrollView1_->Add(label3_);
+ scrollView1_->Add(label4_);
+
+ // Add ImageView to App
+ if (image2_ == nullptr)
+ {
+ image2_ = new UIImageView();
+ }
+ image2_->SetPosition(181, 500); // widget's left position and top position
+ image2_->Resize(100, 100); // widget's width and height
+ image2_->SetViewId("image7"); // Set style
+ // Add to rootView
+ scrollView1_->Add(image2_);
+ image2_->SetVisible(true);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingGPSnoteView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSnoteView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSnoteView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSnotePresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSnoteView::OnSetUpView()
+ {
+
+ View<TraingGPSnotePresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSnoteView::OnTearDownView()
+ {
+
+ View<TraingGPSnotePresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSnoteView::OnStop()
+ {
+ View<TraingGPSnotePresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingGPSsetPresenter.h"
+// #include "TraingGPSsetView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingGPSsetPresenter *g_pTraingGPSsetPresenter = nullptr;
+
+ TraingGPSsetPresenter::TraingGPSsetPresenter()
+ {
+
+ g_pTraingGPSsetPresenter = this;
+ }
+
+ TraingGPSsetPresenter::~TraingGPSsetPresenter()
+ {
+
+ g_pTraingGPSsetPresenter = nullptr;
+ }
+
+ TraingGPSsetPresenter *TraingGPSsetPresenter::GetInstance()
+ {
+
+ return g_pTraingGPSsetPresenter;
+ }
+
+ void TraingGPSsetPresenter::OnStart()
+ {
+
+ Presenter<TraingGPSsetView>::OnStart();
+ }
+
+ void TraingGPSsetPresenter::OnPause(void)
+ {
+
+ Presenter<TraingGPSsetView>::OnPause();
+ }
+
+ void TraingGPSsetPresenter::OnResume(void)
+ {
+
+ Presenter<TraingGPSsetView>::OnResume();
+ }
+
+ void TraingGPSsetPresenter::OnStop(void)
+ {
+
+ Presenter<TraingGPSsetView>::OnStop();
+ }
+
+ bool TraingGPSsetPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPS);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingGPSsetPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONTIME) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETTIME);
+ }
+ if (strcmp(view.GetViewId(), BUTTONMIL) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETDIST);
+ }
+ if (strcmp(view.GetViewId(), BUTTONCALULI) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETCALULI);
+ }
+ if (strcmp(view.GetViewId(), BUTTONWALK) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETSTEP);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingGPSsetView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ // 定义全局变量
+ static char *imagePaths[] = {"/user/res/Training/time.bin",
+ "/user/res/Training/mileage.bin",
+ "/user/res/Training/calories.bin",
+ "/user/res/Training/walking.bin"};
+
+ static char *text[] = {"时长", "距离", "卡路里", "步数"};
+ static const char *imagePath_iocn = "/user/res/Training/icon.bin";
+ static TraingGPSsetView *g_pTraingGPSsetView{nullptr};
+
+ TraingGPSsetView::TraingGPSsetView()
+ {
+ g_pTraingGPSsetView = this;
+ }
+
+ TraingGPSsetView::~TraingGPSsetView()
+ {
+ DeInit();
+ g_pTraingGPSsetView = nullptr;
+ }
+
+ TraingGPSsetView *TraingGPSsetView::GetInstance()
+ {
+
+ return g_pTraingGPSsetView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingGPSsetView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingGPSsetView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingGPSsetPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingGPSsetPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingGPSsetView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* Traing:初始化list */
+ void TraingGPSsetView::InitList()
+ {
+ // Add List to App
+ if (list1_ == nullptr)
+ {
+ list1_ = new UIList();
+ }
+ list1_->SetPosition(60, 110); // widget's left position and top position
+ list1_->Resize(300, 530); // widget's width and height
+ list1_->SetViewId("list1"); // Set style
+ list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+
+ // Set additional property
+ if (list1data_ == nullptr)
+ {
+ list1data_ = new List<IconItemNode *>();
+ }
+
+ // 使用全局变量来初始化列表项
+ for (int i = 0; i < 4; ++i)
+ {
+ IconItemNode *listData = new IconItemNode();
+ listData->imagePath = imagePaths[i];
+ listData->txt = text[i];
+ list1data_->PushBack(listData);
+ }
+
+ if (list1adapter_ == nullptr)
+ {
+ list1adapter_ = new IconAdapter();
+ }
+ list1adapter_->SetItemSize(190, 120);
+ list1adapter_->SetImageSize(70, 120);
+ list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ list1adapter_->SetData(list1data_);
+ list1_->SetAdapter(list1adapter_);
+
+ // Add to scrollView1
+ // scrollView1_->Add(list1_);
+ list1_->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingGPSsetView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+ // Add ScrollView to App
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position
+ scrollView1_->Resize(466, 466); // widget's width and height
+ scrollView1_->SetViewId("scrollView1"); // Set style
+ scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ scrollView1_->SetReboundSize(100);
+ scrollView1_->SetScrollBlankSize(52);
+ scrollView1_->SetHorizontalScrollState(false);
+ // Add to rootView
+ container_->Add(scrollView1_);
+ scrollView1_->SetVisible(true);
+
+ // 初始化Button
+ InitButton(button1_, 43, 120, 380, 100, BUTTONTIME);
+ InitButton(button2_, 43, 240, 380, 100, BUTTONMIL);
+ InitButton(button3_, 43, 360, 380, 100, BUTTONCALULI);
+ InitButton(button4_, 43, 480, 380, 100, BUTTONWALK);
+ scrollView1_->Add(button1_);
+ scrollView1_->Add(button2_);
+ scrollView1_->Add(button3_);
+ scrollView1_->Add(button4_);
+
+ // 初始化Image
+ InitImageView(image1_, 380, 160, 100, 100, "image1", imagePath_iocn);
+ InitImageView(image2_, 380, 280, 100, 100, "image2", imagePath_iocn);
+ InitImageView(image3_, 380, 400, 100, 100, "image3", imagePath_iocn);
+ InitImageView(image4_, 380, 520, 100, 100, "image4", imagePath_iocn);
+ scrollView1_->Add(image1_);
+ scrollView1_->Add(image2_);
+ scrollView1_->Add(image3_);
+ scrollView1_->Add(image4_);
+
+ // 初始化Lable
+ InitLabel(label1_, 203, 52, 120, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 300, 160, 60, 35, "label2", "30 分钟", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label3_, 300, 280, 69, 23, "label3", "5 公里", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label4_, 300, 400, 60, 35, "label4", "500 千卡", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ InitLabel(label5_, 300, 520, 60, 35, "label5", "2000 步", DEFAULT_VECTOR_FONT_FILENAME, 20);
+ scrollView1_->Add(label1_);
+ scrollView1_->Add(label2_);
+ scrollView1_->Add(label3_);
+ scrollView1_->Add(label4_);
+ scrollView1_->Add(label5_);
+
+ // 初始化list
+ InitList();
+ scrollView1_->Add(list1_);
+ }
+ /* DeInit:删除组件 */
+ void TraingGPSsetView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingGPSsetView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingGPSsetView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingGPSsetPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingGPSsetView::OnSetUpView()
+ {
+
+ View<TraingGPSsetPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingGPSsetView::OnTearDownView()
+ {
+
+ View<TraingGPSsetPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingGPSsetView::OnStop()
+ {
+ View<TraingGPSsetPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingLimitPresenter.h"\r
+// #include "TraingLimitView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingLimitPresenter *g_pTraingLimitPresenter = nullptr;\r
+\r
+ TraingLimitPresenter::TraingLimitPresenter()\r
+ {\r
+\r
+ g_pTraingLimitPresenter = this;\r
+ }\r
+\r
+ TraingLimitPresenter::~TraingLimitPresenter()\r
+ {\r
+\r
+ g_pTraingLimitPresenter = nullptr;\r
+ }\r
+\r
+ TraingLimitPresenter *TraingLimitPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingLimitPresenter;\r
+ }\r
+\r
+ void TraingLimitPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingLimitView>::OnStart();\r
+ }\r
+\r
+ void TraingLimitPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingLimitView>::OnPause();\r
+ }\r
+\r
+ void TraingLimitPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingLimitView>::OnResume();\r
+ }\r
+\r
+ void TraingLimitPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingLimitView>::OnStop();\r
+ }\r
+\r
+ bool TraingLimitPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+ (event.GetDeltaX() > 30) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingLimitPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTON1) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON2) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON3) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON4) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON5) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON6) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON7) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON8) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingLimitView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+\r
+ static char *text[] = {"一般极限运动", "滑板", "高空弹跳/蹦极", "跑酷", "BMX", "定向越野", "跳伞", "铁人三项运动"};\r
+ static const char *imagePath_iocn = "/user/res/Training/icon.bin";\r
+\r
+ static TraingLimitView *g_pTraingLimitView{nullptr};\r
+\r
+ TraingLimitView::TraingLimitView()\r
+ {\r
+ g_pTraingLimitView = this;\r
+ }\r
+\r
+ TraingLimitView::~TraingLimitView()\r
+ {\r
+ DeInit();\r
+ g_pTraingLimitView = nullptr;\r
+ }\r
+\r
+ TraingLimitView *TraingLimitView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingLimitView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingLimitView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingLimitView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingLimitPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingLimitPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingLimitView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+\r
+ /* Traing:初始化list */\r
+ void TraingLimitView::InitList()\r
+ {\r
+ // Add List to App\r
+ if (list1_ == nullptr)\r
+ {\r
+ list1_ = new UIList();\r
+ }\r
+ list1_->SetPosition(35, 110); // widget's left position and top position\r
+ list1_->Resize(300, 1100); // widget's width and height\r
+ list1_->SetViewId("list1"); // Set style\r
+ list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+\r
+ // Set additional property\r
+ if (list1data_ == nullptr)\r
+ {\r
+ list1data_ = new List<IconItemNode *>();\r
+ }\r
+\r
+ // 使用全局变量来初始化列表项\r
+ for (int i = 0; i < 8; ++i)\r
+ {\r
+ IconItemNode *listData = new IconItemNode();\r
+ //listData->imagePath = imagePaths[i];\r
+ listData->txt = text[i];\r
+ list1data_->PushBack(listData);\r
+ }\r
+\r
+ if (list1adapter_ == nullptr)\r
+ {\r
+ list1adapter_ = new IconAdapter();\r
+ }\r
+ list1adapter_->SetItemSize(250, 120);\r
+ list1adapter_->SetImageSize(130, 120);\r
+ list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ list1adapter_->SetData(list1data_);\r
+ list1_->SetAdapter(list1adapter_);\r
+\r
+ // Add to scrollView1\r
+ // scrollView1_->Add(list1_);\r
+ list1_->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingLimitView ::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
+ // Add ScrollView to App\r
+ if (scrollView1_ == nullptr)\r
+ {\r
+ scrollView1_ = new UIScrollView();\r
+ }\r
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position\r
+ scrollView1_->Resize(466, 466); // widget's width and height\r
+ scrollView1_->SetViewId("scrollView1"); // Set style\r
+ scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ // Add to rootView\r
+ container_->Add(scrollView1_);\r
+ scrollView1_->SetVisible(true);\r
+\r
+ // 初始化Lable\r
+ InitLabel(label1_, 173, 52, 200, 60, "label1", "极限训练", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ scrollView1_->Add(label1_);\r
+ // 初始化Button\r
+ InitButton(button1_, 43, 120, 380, 100, BUTTON1);\r
+ InitButton(button2_, 43, 240, 380, 100, BUTTON2);\r
+ InitButton(button3_, 43, 360, 380, 100, BUTTON3);\r
+ InitButton(button4_, 43, 480, 380, 100, BUTTON4);\r
+ InitButton(button5_, 43, 600, 380, 100, BUTTON5);\r
+ InitButton(button6_, 43, 720, 380, 100, BUTTON6);\r
+ InitButton(button7_, 43, 840, 380, 100, BUTTON7);\r
+ InitButton(button8_, 43, 960, 380, 100, BUTTON8);\r
+ scrollView1_->Add(button1_);\r
+ scrollView1_->Add(button2_);\r
+ scrollView1_->Add(button3_);\r
+ scrollView1_->Add(button4_);\r
+ scrollView1_->Add(button5_);\r
+ scrollView1_->Add(button6_);\r
+ scrollView1_->Add(button7_);\r
+ scrollView1_->Add(button8_);\r
+ // 初始化image\r
+ InitImageView(image1_, 360, 160, 100, 100, "image1", imagePath_iocn);\r
+ InitImageView(image2_, 360, 280, 100, 100, "image2", imagePath_iocn);\r
+ InitImageView(image3_, 360, 400, 100, 100, "image3", imagePath_iocn);\r
+ InitImageView(image4_, 360, 520, 100, 100, "image4", imagePath_iocn);\r
+ InitImageView(image5_, 360, 640, 100, 100, "image5", imagePath_iocn);\r
+ InitImageView(image6_, 360, 760, 100, 100, "image6", imagePath_iocn);\r
+ InitImageView(image7_, 360, 880, 100, 100, "image7", imagePath_iocn);\r
+ InitImageView(image8_, 360, 1000, 100, 100, "image8", imagePath_iocn);\r
+ scrollView1_->Add(image1_);\r
+ scrollView1_->Add(image2_);\r
+ scrollView1_->Add(image3_);\r
+ scrollView1_->Add(image4_);\r
+ scrollView1_->Add(image5_);\r
+ scrollView1_->Add(image6_);\r
+ scrollView1_->Add(image7_);\r
+ scrollView1_->Add(image8_);\r
+ // 初始化list\r
+ InitList();\r
+ scrollView1_->Add(list1_);\r
+ }\r
+ /* DeInit:删除组件*/\r
+ void TraingLimitView::DeInit()\r
+ {\r
+ if (label1_ != nullptr)\r
+ {\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ if (button1_ != nullptr)\r
+ {\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+ if (button8_ != nullptr)\r
+ {\r
+ delete button8_;\r
+ button8_ = nullptr;\r
+ }\r
+ if (button7_ != nullptr)\r
+ {\r
+ delete button7_;\r
+ button7_ = nullptr;\r
+ }\r
+ if (button6_ != nullptr)\r
+ {\r
+ delete button6_;\r
+ button6_ = nullptr;\r
+ }\r
+ if (button5_ != nullptr)\r
+ {\r
+ delete button5_;\r
+ button5_ = nullptr;\r
+ }\r
+ if (button4_ != nullptr)\r
+ {\r
+ delete button4_;\r
+ button4_ = nullptr;\r
+ }\r
+ if (button3_ != nullptr)\r
+ {\r
+ delete button3_;\r
+ button3_ = nullptr;\r
+ }\r
+ if (button2_ != nullptr)\r
+ {\r
+ delete button2_;\r
+ button2_ = nullptr;\r
+ }\r
+ if (image1_ != nullptr)\r
+ {\r
+ delete image1_;\r
+ image1_ = nullptr;\r
+ }\r
+ if (image2_ != nullptr)\r
+ {\r
+ delete image2_;\r
+ image2_ = nullptr;\r
+ }\r
+ if (image3_ != nullptr)\r
+ {\r
+ delete image3_;\r
+ image3_ = nullptr;\r
+ }\r
+ if (image4_ != nullptr)\r
+ {\r
+ delete image4_;\r
+ image4_ = nullptr;\r
+ }\r
+ if (image5_ != nullptr)\r
+ {\r
+ delete image5_;\r
+ image5_ = nullptr;\r
+ }\r
+ if (image6_ != nullptr)\r
+ {\r
+ delete image6_;\r
+ image6_ = nullptr;\r
+ }\r
+ if (image7_ != nullptr)\r
+ {\r
+ delete image7_;\r
+ image7_ = nullptr;\r
+ }\r
+ if (image8_ != nullptr)\r
+ {\r
+ delete image8_;\r
+ image8_ = nullptr;\r
+ }\r
+ if (list1_ != nullptr)\r
+ {\r
+ delete list1_;\r
+ list1_ = nullptr;\r
+ }\r
+ if (list1adapter_ != nullptr)\r
+ {\r
+ delete list1adapter_;\r
+ list1adapter_ = nullptr;\r
+ }\r
+ if (list1data_ != nullptr)\r
+ {\r
+ list1data_->Clear();\r
+ delete list1data_;\r
+ list1data_ = nullptr;\r
+ }\r
+ if (scrollView1_ != nullptr)\r
+ {\r
+ delete scrollView1_;\r
+ scrollView1_ = nullptr;\r
+ }\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll();\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingLimitView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingLimitView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingLimitPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingLimitView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingLimitPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingLimitView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingLimitPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingLimitView::OnStop()\r
+ {\r
+ View<TraingLimitPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingMorePresenter.h"\r
+// #include "TraingMoreView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingMorePresenter *g_pTraingMorePresenter = nullptr;\r
+\r
+ TraingMorePresenter::TraingMorePresenter()\r
+ {\r
+\r
+ g_pTraingMorePresenter = this;\r
+ }\r
+\r
+ TraingMorePresenter::~TraingMorePresenter()\r
+ {\r
+\r
+ g_pTraingMorePresenter = nullptr;\r
+ }\r
+\r
+ TraingMorePresenter *TraingMorePresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingMorePresenter;\r
+ }\r
+\r
+ void TraingMorePresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingMoreView>::OnStart();\r
+ }\r
+\r
+ void TraingMorePresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingMoreView>::OnPause();\r
+ }\r
+\r
+ void TraingMorePresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingMoreView>::OnResume();\r
+ }\r
+\r
+ void TraingMorePresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingMoreView>::OnStop();\r
+ }\r
+\r
+ bool TraingMorePresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+ {\r
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingMorePresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTON_BALL) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_DANCE) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_FITNESS) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_ICE) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_LIMIT) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_OTHER) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_REST) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTON_SWIMMING) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingMoreView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+ // 定义全局变量\r
+ static char *imagePaths[] = {"/user/res/Training/Fitness.bin",\r
+ "/user/res/Training/Dance.bin",\r
+ "/user/res/Training/Rest.bin",\r
+ "/user/res/Training/Ball.bin",\r
+ "/user/res/Training/Swimming.bin",\r
+ "/user/res/Training/Ice.bin",\r
+ "/user/res/Training/Limit.bin",\r
+ "/user/res/Training/Other.bin"};\r
+\r
+ static char *text[] = {"健身类", "舞蹈类", "休闲运动", "球类", "水上运动", "冰上运动", "极限运动", "其他"};\r
+ static const char *imagePath_iocn = "/user/res/Training/icon.bin";\r
+\r
+ static TraingMoreView *g_pTraingMoreView{nullptr};\r
+\r
+ TraingMoreView::TraingMoreView()\r
+ {\r
+ g_pTraingMoreView = this;\r
+ }\r
+\r
+ TraingMoreView::~TraingMoreView()\r
+ {\r
+ DeInit();\r
+ g_pTraingMoreView = nullptr;\r
+ }\r
+\r
+ TraingMoreView *TraingMoreView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingMoreView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingMoreView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingMoreView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingMorePresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingMorePresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingMoreView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+\r
+ /* Traing:初始化list */\r
+ void TraingMoreView::InitList()\r
+ {\r
+ // Add List to App\r
+ if (list1_ == nullptr)\r
+ {\r
+ list1_ = new UIList();\r
+ }\r
+ list1_->SetPosition(35, 110); // widget's left position and top position\r
+ list1_->Resize(300, 1100); // widget's width and height\r
+ list1_->SetViewId("list1"); // Set style\r
+ list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+\r
+ // Set additional property\r
+ if (list1data_ == nullptr)\r
+ {\r
+ list1data_ = new List<IconItemNode *>();\r
+ }\r
+\r
+ // 使用全局变量来初始化列表项\r
+ for (int i = 0; i < 8; ++i)\r
+ {\r
+ IconItemNode *listData = new IconItemNode();\r
+ listData->imagePath = imagePaths[i];\r
+ listData->txt = text[i];\r
+ list1data_->PushBack(listData);\r
+ }\r
+\r
+ if (list1adapter_ == nullptr)\r
+ {\r
+ list1adapter_ = new IconAdapter();\r
+ }\r
+ list1adapter_->SetItemSize(250, 120);\r
+ list1adapter_->SetImageSize(130, 120);\r
+ list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ list1adapter_->SetData(list1data_);\r
+ list1_->SetAdapter(list1adapter_);\r
+\r
+ // Add to scrollView1\r
+ // scrollView1_->Add(list1_);\r
+ list1_->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingMoreView ::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
+ // Add ScrollView to App\r
+ if (scrollView1_ == nullptr)\r
+ {\r
+ scrollView1_ = new UIScrollView();\r
+ }\r
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position\r
+ scrollView1_->Resize(466, 466); // widget's width and height\r
+ scrollView1_->SetViewId("scrollView1"); // Set style\r
+ scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ // Add to rootView\r
+ container_->Add(scrollView1_);\r
+ scrollView1_->SetVisible(true);\r
+\r
+ // 初始化Lable\r
+ InitLabel(label1_, 203, 52, 200, 60, "label1", "训练", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ scrollView1_->Add(label1_);\r
+ // 初始化Button\r
+ InitButton(button1_, 43, 120, 380, 100, BUTTON_FITNESS);\r
+ InitButton(button2_, 43, 240, 380, 100, BUTTON_DANCE);\r
+ InitButton(button1_, 43, 120, 380, 100, BUTTON_FITNESS);\r
+ InitButton(button2_, 43, 240, 380, 100, BUTTON_DANCE);\r
+ InitButton(button3_, 43, 360, 380, 100, BUTTON_REST);\r
+ InitButton(button4_, 43, 480, 380, 100, BUTTON_BALL);\r
+ InitButton(button5_, 43, 600, 380, 100, BUTTON_SWIMMING);\r
+ InitButton(button6_, 43, 720, 380, 100, BUTTON_ICE);\r
+ InitButton(button7_, 43, 840, 380, 100, BUTTON_LIMIT);\r
+ InitButton(button8_, 43, 960, 380, 100, BUTTON_OTHER);\r
+ scrollView1_->Add(button1_);\r
+ scrollView1_->Add(button2_);\r
+ scrollView1_->Add(button3_);\r
+ scrollView1_->Add(button4_);\r
+ scrollView1_->Add(button5_);\r
+ scrollView1_->Add(button6_);\r
+ scrollView1_->Add(button7_);\r
+ scrollView1_->Add(button8_);\r
+ // 初始化image\r
+ InitImageView(image1_, 360, 160, 100, 100, "image1", imagePath_iocn);\r
+ InitImageView(image2_, 360, 280, 100, 100, "image2", imagePath_iocn);\r
+ InitImageView(image3_, 360, 400, 100, 100, "image3", imagePath_iocn);\r
+ InitImageView(image4_, 360, 520, 100, 100, "image4", imagePath_iocn);\r
+ InitImageView(image5_, 360, 640, 100, 100, "image5", imagePath_iocn);\r
+ InitImageView(image6_, 360, 760, 100, 100, "image6", imagePath_iocn);\r
+ InitImageView(image7_, 360, 880, 100, 100, "image7", imagePath_iocn);\r
+ InitImageView(image8_, 360, 1000, 100, 100, "image8", imagePath_iocn);\r
+ scrollView1_->Add(image1_);\r
+ scrollView1_->Add(image2_);\r
+ scrollView1_->Add(image3_);\r
+ scrollView1_->Add(image4_);\r
+ scrollView1_->Add(image5_);\r
+ scrollView1_->Add(image6_);\r
+ scrollView1_->Add(image7_);\r
+ scrollView1_->Add(image8_);\r
+ // 初始化list\r
+ InitList();\r
+ scrollView1_->Add(list1_);\r
+ }\r
+ /* DeInit:删除组件*/\r
+ void TraingMoreView::DeInit()\r
+ {\r
+ if (label1_ != nullptr)\r
+ {\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ if (button1_ != nullptr)\r
+ {\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+ if (button8_ != nullptr)\r
+ {\r
+ delete button8_;\r
+ button8_ = nullptr;\r
+ }\r
+ if (button7_ != nullptr)\r
+ {\r
+ delete button7_;\r
+ button7_ = nullptr;\r
+ }\r
+ if (button6_ != nullptr)\r
+ {\r
+ delete button6_;\r
+ button6_ = nullptr;\r
+ }\r
+ if (button5_ != nullptr)\r
+ {\r
+ delete button5_;\r
+ button5_ = nullptr;\r
+ }\r
+ if (button4_ != nullptr)\r
+ {\r
+ delete button4_;\r
+ button4_ = nullptr;\r
+ }\r
+ if (button3_ != nullptr)\r
+ {\r
+ delete button3_;\r
+ button3_ = nullptr;\r
+ }\r
+ if (button2_ != nullptr)\r
+ {\r
+ delete button2_;\r
+ button2_ = nullptr;\r
+ }\r
+ if (image1_ != nullptr)\r
+ {\r
+ delete image1_;\r
+ image1_ = nullptr;\r
+ }\r
+ if (image2_ != nullptr)\r
+ {\r
+ delete image2_;\r
+ image2_ = nullptr;\r
+ }\r
+ if (image3_ != nullptr)\r
+ {\r
+ delete image3_;\r
+ image3_ = nullptr;\r
+ }\r
+ if (image4_ != nullptr)\r
+ {\r
+ delete image4_;\r
+ image4_ = nullptr;\r
+ }\r
+ if (image5_ != nullptr)\r
+ {\r
+ delete image5_;\r
+ image5_ = nullptr;\r
+ }\r
+ if (image6_ != nullptr)\r
+ {\r
+ delete image6_;\r
+ image6_ = nullptr;\r
+ }\r
+ if (image7_ != nullptr)\r
+ {\r
+ delete image7_;\r
+ image7_ = nullptr;\r
+ }\r
+ if (image8_ != nullptr)\r
+ {\r
+ delete image8_;\r
+ image8_ = nullptr;\r
+ }\r
+ if (list1_ != nullptr)\r
+ {\r
+ delete list1_;\r
+ list1_ = nullptr;\r
+ }\r
+ if (list1adapter_ != nullptr)\r
+ {\r
+ delete list1adapter_;\r
+ list1adapter_ = nullptr;\r
+ }\r
+ if (list1data_ != nullptr)\r
+ {\r
+ list1data_->Clear();\r
+ delete list1data_;\r
+ list1data_ = nullptr;\r
+ }\r
+ if (scrollView1_ != nullptr)\r
+ {\r
+ delete scrollView1_;\r
+ scrollView1_ = nullptr;\r
+ }\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll();\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingMoreView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingMoreView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingMorePresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingMoreView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingMorePresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingMoreView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingMorePresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingMoreView::OnStop()\r
+ {\r
+ View<TraingMorePresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingNomalPresenter.h"\r
+// #include "TraingNomalView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingNomalPresenter *g_pTraingNomalPresenter = nullptr;\r
+\r
+ TraingNomalPresenter::TraingNomalPresenter()\r
+ {\r
+\r
+ g_pTraingNomalPresenter = this;\r
+ }\r
+\r
+ TraingNomalPresenter::~TraingNomalPresenter()\r
+ {\r
+\r
+ g_pTraingNomalPresenter = nullptr;\r
+ }\r
+\r
+ TraingNomalPresenter *TraingNomalPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingNomalPresenter;\r
+ }\r
+\r
+ void TraingNomalPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingNomalView>::OnStart();\r
+ }\r
+\r
+ void TraingNomalPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingNomalView>::OnPause();\r
+ }\r
+\r
+ void TraingNomalPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingNomalView>::OnResume();\r
+ }\r
+\r
+ void TraingNomalPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingNomalView>::OnStop();\r
+ }\r
+\r
+ bool TraingNomalPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingNomalPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONSET) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTONGO) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+
+#include "traing/include/TraingNomalView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+
+ static TraingNomalView *g_pTraingNomalView{nullptr};
+
+ TraingNomalView::TraingNomalView()
+ {
+ g_pTraingNomalView = this;
+ }
+
+ TraingNomalView::~TraingNomalView()
+ {
+ DeInit();
+ g_pTraingNomalView = nullptr;
+ }
+
+ TraingNomalView *TraingNomalView::GetInstance()
+ {
+
+ return g_pTraingNomalView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingNomalView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingNomalView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingNomalPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingNomalPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingNomalView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 137, 52, 195, 35, "label1", "高空弹跳/蹦极", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label1_);
+ InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label2_);
+ // 初始化Button
+ InitButton(button1_, 133, 133, 200, 200, BUTTONGO);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/Go.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+
+ InitButton(button2_, 160, 370, 146, 35, BUTTONSET);
+ button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);//设置为透明按键
+ button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+ button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明
+
+ container_->Add(button1_);
+ container_->Add(button2_);
+ }
+ /* DeInit:删除组件*/
+ void TraingNomalView::DeInit()
+ {
+ if (label1_ != nullptr)
+ {
+ delete label1_;
+ label1_ = nullptr;
+ }
+ if (button1_ != nullptr)
+ {
+ delete button1_;
+ button1_ = nullptr;
+ }
+ if (button2_ != nullptr)
+ {
+ delete button2_;
+ button2_ = nullptr;
+ }
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
+ }
+
+ void TraingNomalView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingNomalView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingNomalPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingNomalView::OnSetUpView()
+ {
+
+ View<TraingNomalPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingNomalView::OnTearDownView()
+ {
+
+ View<TraingNomalPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingNomalView::OnStop()
+ {
+ View<TraingNomalPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingPresenter.h"
+//#include "TraingView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingPresenter *g_pTraingPresenter = nullptr;
+
+ TraingPresenter::TraingPresenter()
+ {
+
+ g_pTraingPresenter = this;
+ }
+
+ TraingPresenter::~TraingPresenter()
+ {
+
+ g_pTraingPresenter = nullptr;
+ }
+
+ TraingPresenter *TraingPresenter::GetInstance()
+ {
+
+ return g_pTraingPresenter;
+ }
+
+ void TraingPresenter::OnStart()
+ {
+
+ Presenter<TraingView>::OnStart();
+ }
+
+ void TraingPresenter::OnPause(void)
+ {
+
+ Presenter<TraingView>::OnPause();
+ }
+
+ void TraingPresenter::OnResume(void)
+ {
+
+ Presenter<TraingView>::OnResume();
+ }
+
+ void TraingPresenter::OnStop(void)
+ {
+
+ Presenter<TraingView>::OnStop();
+ }
+
+ bool TraingPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTON1) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ if (strcmp(view.GetViewId(), "Remind") == 0)
+ {
+ // 模拟心率监测,等待20秒
+ //std::this_thread::sleep_for(std::chrono::seconds(20));
+ //NativeAbility::GetInstance().ChangeSlice(VIEW_TraingREMIND);
+ }
+ return true;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingSetCaluliPresenter.h"\r
+// #include "TraingSetCaluliView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingSetCaluliPresenter *g_pTraingSetCaluliPresenter = nullptr;\r
+\r
+ TraingSetCaluliPresenter::TraingSetCaluliPresenter()\r
+ {\r
+\r
+ g_pTraingSetCaluliPresenter = this;\r
+ }\r
+\r
+ TraingSetCaluliPresenter::~TraingSetCaluliPresenter()\r
+ {\r
+\r
+ g_pTraingSetCaluliPresenter = nullptr;\r
+ }\r
+\r
+ TraingSetCaluliPresenter *TraingSetCaluliPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetCaluliPresenter;\r
+ }\r
+\r
+ void TraingSetCaluliPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingSetCaluliView>::OnStart();\r
+ }\r
+\r
+ void TraingSetCaluliPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingSetCaluliView>::OnPause();\r
+ }\r
+\r
+ void TraingSetCaluliPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingSetCaluliView>::OnResume();\r
+ }\r
+\r
+ void TraingSetCaluliPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingSetCaluliView>::OnStop();\r
+ }\r
+\r
+ bool TraingSetCaluliPresenter::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_TRAININGSET);\r
+ // }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingSetCaluliPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)\r
+ {\r
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+ NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingSetCaluliView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+#include "common/screen.h"\r
+#include <sstream>\r
+#include <string>\r
+#include <vector>\r
+\r
+namespace OHOS\r
+{\r
+\r
+ /***************************************************************************************/\r
+ // 动态生成包含指定卡路里区间内所有卡路里数的字符串数组\r
+ std::vector<std::string> GenerateCaluliValues(int minTime, int maxTime, int interval)\r
+ {\r
+ std::vector<std::string> values;\r
+ for (int i = minTime; i <= maxTime; i += interval)\r
+ {\r
+ values.push_back(std::to_string(i) + " 千卡");\r
+ }\r
+ return values;\r
+ }\r
+ /***************************************************************************************/\r
+ static TraingSetCaluliView *g_pTraingSetCaluliView{nullptr};\r
+\r
+ TraingSetCaluliView::TraingSetCaluliView()\r
+ {\r
+ g_pTraingSetCaluliView = this;\r
+ }\r
+\r
+ TraingSetCaluliView::~TraingSetCaluliView()\r
+ {\r
+ DeInit();\r
+ g_pTraingSetCaluliView = nullptr;\r
+ }\r
+\r
+ TraingSetCaluliView *TraingSetCaluliView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetCaluliView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingSetCaluliView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingSetCaluliView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingSetCaluliPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetCaluliPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitUIPicker: 初始化UIPicker组件\r
+ @param picker: 指向UIPicker的指针\r
+ @param x: UIPicker的左边位置\r
+ @param y: UIPicker的顶部位置\r
+ @param width: UIPicker的宽度\r
+ @param height: UIPicker的高度\r
+ @param viewId: UIPicker的视图 ID\r
+ @param values: 选项数组\r
+ @param count: 选项数量\r
+ @param backgroundFontSize: 普通文本大小\r
+ @highlightFontSize: 高光文本大小\r
+ */\r
+ void TraingSetCaluliView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)\r
+ {\r
+ // 文本大小\r
+ constexpr uint8_t BACKGROUND_FONT = 40;\r
+ constexpr uint8_t HIGHTLIGHT_FONT = 60;\r
+ // 获取value数组\r
+ int minCaluli = 100;\r
+ int maxCaluli = 1000;\r
+ int interval = 100;\r
+ std::vector<std::string> caluliValues = GenerateCaluliValues(minCaluli, maxCaluli, interval);\r
+\r
+ const char **values = new const char *[caluliValues.size()];\r
+ for (size_t i = 0; i < caluliValues.size(); i++)\r
+ {\r
+ values[i] = caluliValues[i].c_str();\r
+ }\r
+ // 创建 UIPicker\r
+ if (picker == nullptr)\r
+ {\r
+ picker = new UIPicker();\r
+ }\r
+\r
+ // 设置 UIPicker 的位置和大小\r
+ picker->SetPosition(x, y);\r
+ picker->Resize(width, height);\r
+ // 设置 UIPicker 的 ViewId\r
+ picker->SetViewId(viewId);\r
+ // 设置 UIPicker 的属性\r
+ picker->SetItemHeight(70);\r
+ picker->SetLoopState(true);\r
+ picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
+ picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小\r
+ picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT); // 设置高光文本大小\r
+ picker->SetValues(values, caluliValues.size());\r
+ // 将 UIPicker 设置为显示\r
+ picker->SetVisible(true);\r
+ }\r
+\r
+ /* InitView:初始化界面*/\r
+ void TraingSetCaluliView ::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
+ // 初始化Lable\r
+ InitLabel(label1_, 173, 52, 120, 35, "label1", "卡路里设定", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ container_->Add(label1_);\r
+\r
+ // 初始化UIPicker\r
+ InitUIPicker(uiPicker1_, 43, 106, 380, 240, "uiPicker1");\r
+ container_->Add(uiPicker1_);\r
+ // 初始化Button\r
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);\r
+ // Set additional property\r
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";\r
+ char *button1triggeredImgSrc = nullptr;\r
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
+ container_->Add(button1_);\r
+ }\r
+ /* DeInit:删除组件 */\r
+ void TraingSetCaluliView::DeInit()\r
+ {\r
+ // 删除Label\r
+ if (label1_ != nullptr)\r
+ {\r
+ container_->Remove(label1_);\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ // 删除Button\r
+ if (button1_ != nullptr)\r
+ {\r
+ container_->Remove(button1_);\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+\r
+ // 删除Image\r
+\r
+ // 删除滚动选择器\r
+ if (uiPicker1_ != nullptr)\r
+ {\r
+ container_->Remove(uiPicker1_);\r
+ delete uiPicker1_;\r
+ uiPicker1_ = nullptr;\r
+ }\r
+\r
+ // 删除容器\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll(); // 移除容器中的所有组件\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingSetCaluliView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ //printf("init traingsetcaluliview\n");\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingSetCaluliView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetCaluliPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingSetCaluliView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingSetCaluliPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingSetCaluliView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingSetCaluliPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingSetCaluliView::OnStop()\r
+ {\r
+ View<TraingSetCaluliPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingSetDistPresenter.h"
+// #include "TraingSetDistView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingSetDistPresenter *g_pTraingSetDistPresenter = nullptr;
+
+ TraingSetDistPresenter::TraingSetDistPresenter()
+ {
+
+ g_pTraingSetDistPresenter = this;
+ }
+
+ TraingSetDistPresenter::~TraingSetDistPresenter()
+ {
+
+ g_pTraingSetDistPresenter = nullptr;
+ }
+
+ TraingSetDistPresenter *TraingSetDistPresenter::GetInstance()
+ {
+
+ return g_pTraingSetDistPresenter;
+ }
+
+ void TraingSetDistPresenter::OnStart()
+ {
+
+ Presenter<TraingSetDistView>::OnStart();
+ }
+
+ void TraingSetDistPresenter::OnPause(void)
+ {
+
+ Presenter<TraingSetDistView>::OnPause();
+ }
+
+ void TraingSetDistPresenter::OnResume(void)
+ {
+
+ Presenter<TraingSetDistView>::OnResume();
+ }
+
+ void TraingSetDistPresenter::OnStop(void)
+ {
+
+ Presenter<TraingSetDistView>::OnStop();
+ }
+
+ bool TraingSetDistPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ // (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingSetDistPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingSetDistView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+#include "common/screen.h"
+#include <sstream>
+#include <string>
+#include <vector>
+
+namespace OHOS
+{
+
+ /***************************************************************************************/
+ // 动态生成包含指定公里区间内所有公里的字符串数组
+ std::vector<std::string> GenerateDistValues(int minDist, int maxDist, int interval)
+ {
+ std::vector<std::string> values;
+ for (int i = minDist; i <= maxDist; i += interval)
+ {
+ values.push_back(std::to_string(i) + " 公里");
+ }
+ return values;
+ }
+ /***************************************************************************************/
+ static TraingSetDistView *g_pTraingSetDistView{nullptr};
+
+ TraingSetDistView::TraingSetDistView()
+ {
+ g_pTraingSetDistView = this;
+ }
+
+ TraingSetDistView::~TraingSetDistView()
+ {
+ DeInit();
+ g_pTraingSetDistView = nullptr;
+ }
+
+ TraingSetDistView *TraingSetDistView::GetInstance()
+ {
+
+ return g_pTraingSetDistView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingSetDistView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingSetDistView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingSetDistPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetDistPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitUIPicker: 初始化UIPicker组件
+ @param picker: 指向UIPicker的指针
+ @param x: UIPicker的左边位置
+ @param y: UIPicker的顶部位置
+ @param width: UIPicker的宽度
+ @param height: UIPicker的高度
+ @param viewId: UIPicker的视图 ID
+ @param values: 选项数组
+ @param count: 选项数量
+ @param backgroundFontSize: 普通文本大小
+ @highlightFontSize: 高光文本大小
+ */
+ void TraingSetDistView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)
+ {
+ // 文本大小
+ constexpr uint8_t BACKGROUND_FONT = 40;
+ constexpr uint8_t HIGHTLIGHT_FONT = 60;
+ // 获取value数组
+ int minDist = 1;
+ int maxDist = 20;
+ int interval = 1;
+ std::vector<std::string> DistValues = GenerateDistValues(minDist, maxDist, interval);
+
+ const char **values = new const char *[DistValues.size()];
+ for (size_t i = 0; i < DistValues.size(); i++)
+ {
+ values[i] = DistValues[i].c_str();
+ }
+ // 创建 UIPicker
+ if (picker == nullptr)
+ {
+ picker = new UIPicker();
+ }
+
+ // 设置 UIPicker 的位置和大小
+ picker->SetPosition(x, y);
+ picker->Resize(width, height);
+ // 设置 UIPicker 的 ViewId
+ picker->SetViewId(viewId);
+ // 设置 UIPicker 的属性
+ picker->SetItemHeight(70);
+ picker->SetLoopState(true);
+ picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小
+ picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT); // 设置高光文本大小
+ picker->SetValues(values, DistValues.size());
+ // 将 UIPicker 设置为显示
+ picker->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingSetDistView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+ // 初始化Lable
+ InitLabel(label1_, 173, 52, 120, 35, "label1", "步数设定", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label1_);
+
+ // 初始化UIPicker
+ InitUIPicker(uiPicker1_, 43, 106, 380, 240, "uiPicker1");
+ container_->Add(uiPicker1_);
+ // 初始化Button
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+ container_->Add(button1_);
+ }
+ /* DeInit:删除组件 */
+ void TraingSetDistView::DeInit()
+ {
+ // 删除Label
+ if (label1_ != nullptr)
+ {
+ container_->Remove(label1_);
+ delete label1_;
+ label1_ = nullptr;
+ }
+ // 删除Button
+ if (button1_ != nullptr)
+ {
+ container_->Remove(button1_);
+ delete button1_;
+ button1_ = nullptr;
+ }
+
+ // 删除Image
+
+ // 删除滚动选择器
+ if (uiPicker1_ != nullptr)
+ {
+ container_->Remove(uiPicker1_);
+ delete uiPicker1_;
+ uiPicker1_ = nullptr;
+ }
+
+ // 删除容器
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll(); // 移除容器中的所有组件
+ delete container_;
+ container_ = nullptr;
+ }
+ }
+
+ void TraingSetDistView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ //printf("init TraingSetDistview\n");
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingSetDistView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetDistPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingSetDistView::OnSetUpView()
+ {
+
+ View<TraingSetDistPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingSetDistView::OnTearDownView()
+ {
+
+ View<TraingSetDistPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingSetDistView::OnStop()
+ {
+ View<TraingSetDistPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingSetPresenter.h"\r
+// #include "TraingSetView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingSetPresenter *g_pTraingSetPresenter = nullptr;\r
+\r
+ TraingSetPresenter::TraingSetPresenter()\r
+ {\r
+\r
+ g_pTraingSetPresenter = this;\r
+ }\r
+\r
+ TraingSetPresenter::~TraingSetPresenter()\r
+ {\r
+\r
+ g_pTraingSetPresenter = nullptr;\r
+ }\r
+\r
+ TraingSetPresenter *TraingSetPresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetPresenter;\r
+ }\r
+\r
+ void TraingSetPresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingSetView>::OnStart();\r
+ }\r
+\r
+ void TraingSetPresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingSetView>::OnPause();\r
+ }\r
+\r
+ void TraingSetPresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingSetView>::OnResume();\r
+ }\r
+\r
+ void TraingSetPresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingSetView>::OnStop();\r
+ }\r
+\r
+ bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+ (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+ {\r
+ //uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL);\r
+ }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingSetPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONTIME) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETTIME);\r
+ }\r
+ if (strcmp(view.GetViewId(), BUTTONCALULI) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETCALULI);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingSetSeptPresenter.h"
+// #include "TraingSetSeptView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingSetSeptPresenter *g_pTraingSetSeptPresenter = nullptr;
+
+ TraingSetSeptPresenter::TraingSetSeptPresenter()
+ {
+
+ g_pTraingSetSeptPresenter = this;
+ }
+
+ TraingSetSeptPresenter::~TraingSetSeptPresenter()
+ {
+
+ g_pTraingSetSeptPresenter = nullptr;
+ }
+
+ TraingSetSeptPresenter *TraingSetSeptPresenter::GetInstance()
+ {
+
+ return g_pTraingSetSeptPresenter;
+ }
+
+ void TraingSetSeptPresenter::OnStart()
+ {
+
+ Presenter<TraingSetSeptView>::OnStart();
+ }
+
+ void TraingSetSeptPresenter::OnPause(void)
+ {
+
+ Presenter<TraingSetSeptView>::OnPause();
+ }
+
+ void TraingSetSeptPresenter::OnResume(void)
+ {
+
+ Presenter<TraingSetSeptView>::OnResume();
+ }
+
+ void TraingSetSeptPresenter::OnStop(void)
+ {
+
+ Presenter<TraingSetSeptView>::OnStop();
+ }
+
+ bool TraingSetSeptPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ // (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingSetSeptPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)
+ {
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingSetSeptView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+#include "common/screen.h"
+#include <sstream>
+#include <string>
+#include <vector>
+
+namespace OHOS
+{
+
+ /***************************************************************************************/
+ // 动态生成包含指定步数区间内所有步数的字符串数组
+ std::vector<std::string> GenerateSeptValues(int minSept, int maxSept, int interval)
+ {
+ std::vector<std::string> values;
+ for (int i = minSept; i <= maxSept; i += interval)
+ {
+ values.push_back(std::to_string(i) + " 步");
+ }
+ return values;
+ }
+ /***************************************************************************************/
+ static TraingSetSeptView *g_pTraingSetSeptView{nullptr};
+
+ TraingSetSeptView::TraingSetSeptView()
+ {
+ g_pTraingSetSeptView = this;
+ }
+
+ TraingSetSeptView::~TraingSetSeptView()
+ {
+ DeInit();
+ g_pTraingSetSeptView = nullptr;
+ }
+
+ TraingSetSeptView *TraingSetSeptView::GetInstance()
+ {
+
+ return g_pTraingSetSeptView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingSetSeptView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingSetSeptView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingSetSeptPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetSeptPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitUIPicker: 初始化UIPicker组件
+ @param picker: 指向UIPicker的指针
+ @param x: UIPicker的左边位置
+ @param y: UIPicker的顶部位置
+ @param width: UIPicker的宽度
+ @param height: UIPicker的高度
+ @param viewId: UIPicker的视图 ID
+ @param values: 选项数组
+ @param count: 选项数量
+ @param backgroundFontSize: 普通文本大小
+ @highlightFontSize: 高光文本大小
+ */
+ void TraingSetSeptView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)
+ {
+ // 文本大小
+ constexpr uint8_t BACKGROUND_FONT = 40;
+ constexpr uint8_t HIGHTLIGHT_FONT = 60;
+ // 获取value数组
+ int minSept = 500;
+ int maxSept = 50000;
+ int interval = 500;
+ std::vector<std::string> SeptValues = GenerateSeptValues(minSept, maxSept, interval);
+
+ const char **values = new const char *[SeptValues.size()];
+ for (size_t i = 0; i < SeptValues.size(); i++)
+ {
+ values[i] = SeptValues[i].c_str();
+ }
+ // 创建 UIPicker
+ if (picker == nullptr)
+ {
+ picker = new UIPicker();
+ }
+
+ // 设置 UIPicker 的位置和大小
+ picker->SetPosition(x, y);
+ picker->Resize(width, height);
+ // 设置 UIPicker 的 ViewId
+ picker->SetViewId(viewId);
+ // 设置 UIPicker 的属性
+ picker->SetItemHeight(70);
+ picker->SetLoopState(true);
+ picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小
+ picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT); // 设置高光文本大小
+ picker->SetValues(values, SeptValues.size());
+ // 将 UIPicker 设置为显示
+ picker->SetVisible(true);
+ }
+
+ /* InitView:初始化界面*/
+ void TraingSetSeptView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+ // 初始化Lable
+ InitLabel(label1_, 173, 52, 120, 35, "label1", "步数设定", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label1_);
+
+ // 初始化UIPicker
+ InitUIPicker(uiPicker1_, 43, 106, 380, 240, "uiPicker1");
+ container_->Add(uiPicker1_);
+ // 初始化Button
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+ container_->Add(button1_);
+ }
+ /* DeInit:删除组件 */
+ void TraingSetSeptView::DeInit()
+ {
+ // 删除Label
+ if (label1_ != nullptr)
+ {
+ container_->Remove(label1_);
+ delete label1_;
+ label1_ = nullptr;
+ }
+ // 删除Button
+ if (button1_ != nullptr)
+ {
+ container_->Remove(button1_);
+ delete button1_;
+ button1_ = nullptr;
+ }
+
+ // 删除Image
+
+ // 删除滚动选择器
+ if (uiPicker1_ != nullptr)
+ {
+ container_->Remove(uiPicker1_);
+ delete uiPicker1_;
+ uiPicker1_ = nullptr;
+ }
+
+ // 删除容器
+ if (container_ != nullptr)
+ {
+ container_->RemoveAll(); // 移除容器中的所有组件
+ delete container_;
+ container_ = nullptr;
+ }
+ }
+
+ void TraingSetSeptView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ //printf("init TraingSetSeptview\n");
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingSetSeptView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetSeptPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingSetSeptView::OnSetUpView()
+ {
+
+ View<TraingSetSeptPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingSetSeptView::OnTearDownView()
+ {
+
+ View<TraingSetSeptPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingSetSeptView::OnStop()
+ {
+ View<TraingSetSeptPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include <iostream>\r
+#include <chrono>\r
+#include <thread>\r
+#include "traing/include/TraingSetTimePresenter.h"\r
+// #include "TraingSetTimeView.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static TraingSetTimePresenter *g_pTraingSetTimePresenter = nullptr;\r
+\r
+ TraingSetTimePresenter::TraingSetTimePresenter()\r
+ {\r
+\r
+ g_pTraingSetTimePresenter = this;\r
+ }\r
+\r
+ TraingSetTimePresenter::~TraingSetTimePresenter()\r
+ {\r
+\r
+ g_pTraingSetTimePresenter = nullptr;\r
+ }\r
+\r
+ TraingSetTimePresenter *TraingSetTimePresenter::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetTimePresenter;\r
+ }\r
+\r
+ void TraingSetTimePresenter::OnStart()\r
+ {\r
+\r
+ Presenter<TraingSetTimeView>::OnStart();\r
+ }\r
+\r
+ void TraingSetTimePresenter::OnPause(void)\r
+ {\r
+\r
+ Presenter<TraingSetTimeView>::OnPause();\r
+ }\r
+\r
+ void TraingSetTimePresenter::OnResume(void)\r
+ {\r
+\r
+ Presenter<TraingSetTimeView>::OnResume();\r
+ }\r
+\r
+ void TraingSetTimePresenter::OnStop(void)\r
+ {\r
+\r
+ Presenter<TraingSetTimeView>::OnStop();\r
+ }\r
+\r
+ bool TraingSetTimePresenter::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_TRAININGSET);\r
+ // }\r
+ UNUSED(view);\r
+ return true;\r
+ }\r
+\r
+ bool TraingSetTimePresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ // 根据控件id查找是哪个控件触发了点击回调\r
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)\r
+ {\r
+ uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+ NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+ }\r
+ if (strcmp(view.GetViewId(), "Remind") == 0)\r
+ {\r
+ // 模拟心率监测,等待20秒\r
+ // std::this_thread::sleep_for(std::chrono::seconds(20));\r
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TraingSetTimeREMIND);\r
+ }\r
+ return true;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingSetTimeView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+#include "common/screen.h"\r
+#include <sstream>\r
+#include <string>\r
+#include <vector>\r
+\r
+namespace OHOS\r
+{\r
+\r
+ /***************************************************************************************/\r
+ // 动态生成包含指定时间区间内所有分钟数的字符串数组\r
+ std::vector<std::string> GenerateTimeValues(int minTime, int maxTime, int interval)\r
+ {\r
+ std::vector<std::string> values;\r
+ for (int i = minTime; i <= maxTime; i += interval)\r
+ {\r
+ values.push_back(std::to_string(i) + " 分钟");\r
+ }\r
+ return values;\r
+ }\r
+ /***************************************************************************************/\r
+ static TraingSetTimeView *g_pTraingSetTimeView{nullptr};\r
+\r
+ TraingSetTimeView::TraingSetTimeView()\r
+ {\r
+ g_pTraingSetTimeView = this;\r
+ }\r
+\r
+ TraingSetTimeView::~TraingSetTimeView()\r
+ {\r
+ DeInit();\r
+ g_pTraingSetTimeView = nullptr;\r
+ }\r
+\r
+ TraingSetTimeView *TraingSetTimeView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetTimeView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingSetTimeView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingSetTimeView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingSetTimePresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetTimePresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitUIPicker: 初始化UIPicker组件\r
+ @param picker: 指向UIPicker的指针\r
+ @param x: UIPicker的左边位置\r
+ @param y: UIPicker的顶部位置\r
+ @param width: UIPicker的宽度\r
+ @param height: UIPicker的高度\r
+ @param viewId: UIPicker的视图 ID\r
+ @param values: 选项数组\r
+ @param count: 选项数量\r
+ @param backgroundFontSize: 普通文本大小\r
+ @highlightFontSize: 高光文本大小\r
+ */\r
+ void TraingSetTimeView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)\r
+ {\r
+ // 文本大小\r
+ constexpr uint8_t BACKGROUND_FONT = 40;\r
+ constexpr uint8_t HIGHTLIGHT_FONT = 60;\r
+ // 获取value数组\r
+ int minTime = 10;\r
+ int maxTime = 600;\r
+ int interval = 10;\r
+ std::vector<std::string> timeValues = GenerateTimeValues(minTime, maxTime, interval);\r
+\r
+ const char **values = new const char *[timeValues.size()];\r
+ for (size_t i = 0; i < timeValues.size(); i++)\r
+ {\r
+ values[i] = timeValues[i].c_str();\r
+ }\r
+ // 创建 UIPicker\r
+ if (picker == nullptr)\r
+ {\r
+ picker = new UIPicker();\r
+ }\r
+\r
+ // 设置 UIPicker 的位置和大小\r
+ picker->SetPosition(x, y);\r
+ picker->Resize(width, height);\r
+ // 设置 UIPicker 的 ViewId\r
+ picker->SetViewId(viewId);\r
+ // 设置 UIPicker 的属性\r
+ picker->SetItemHeight(70);\r
+ picker->SetLoopState(true);\r
+ picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
+ picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小\r
+ picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT); // 设置高光文本大小\r
+ picker->SetValues(values, timeValues.size());\r
+ // 将 UIPicker 设置为显示\r
+ picker->SetVisible(true);\r
+ }\r
+\r
+ /* InitView:初始化界面*/\r
+ void TraingSetTimeView ::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
+ // 初始化Lable\r
+ InitLabel(label1_, 173, 52, 120, 35, "label1", "时长设定", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ container_->Add(label1_);\r
+\r
+ // 初始化UIPicker\r
+ InitUIPicker(uiPicker1_, 43, 106, 380, 240, "uiPicker1");\r
+ container_->Add(uiPicker1_);\r
+ // 初始化Button\r
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);\r
+ // Set additional property\r
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";\r
+ char *button1triggeredImgSrc = nullptr;\r
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
+ container_->Add(button1_);\r
+ }\r
+ /* DeInit:删除组件 */\r
+ void TraingSetTimeView::DeInit()\r
+ {\r
+ // 删除Label\r
+ if (label1_ != nullptr)\r
+ {\r
+ container_->Remove(label1_);\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ // 删除Button\r
+ if (button1_ != nullptr)\r
+ {\r
+ container_->Remove(button1_);\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+\r
+ // 删除Image\r
+\r
+ // 删除滚动选择器\r
+ if (uiPicker1_ != nullptr)\r
+ {\r
+ container_->Remove(uiPicker1_);\r
+ delete uiPicker1_;\r
+ uiPicker1_ = nullptr;\r
+ }\r
+\r
+ // 删除容器\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll(); // 移除容器中的所有组件\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingSetTimeView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingSetTimeView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetTimePresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingSetTimeView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingSetTimePresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingSetTimeView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingSetTimePresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingSetTimeView::OnStop()\r
+ {\r
+ View<TraingSetTimePresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+\r
+#include "traing/include/TraingSetView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+namespace OHOS\r
+{\r
+ static const char *imagePath_iocn = "/user/res/Training/icon.bin";\r
+ static const char *imagePath_time = "/user/res/Training/time.bin";\r
+ static const char *imagePath_calories = "/user/res/Training/calories.bin";\r
+\r
+ static TraingSetView *g_pTraingSetView{nullptr};\r
+\r
+ TraingSetView::TraingSetView()\r
+ {\r
+ g_pTraingSetView = this;\r
+ }\r
+\r
+ TraingSetView::~TraingSetView()\r
+ {\r
+ DeInit();\r
+ g_pTraingSetView = nullptr;\r
+ }\r
+\r
+ TraingSetView *TraingSetView::GetInstance()\r
+ {\r
+\r
+ return g_pTraingSetView;\r
+ }\r
+ /*\r
+ InitLabel:初始化标签\r
+ @param label 标签指针\r
+ @param left 标签左边位置\r
+ @param top 标签顶部位置\r
+ @param width 标签宽度\r
+ @param height 标签高度\r
+ @param viewId 标签的视图 ID\r
+ @param text 标签显示的文本\r
+ @param fontName 字体名称\r
+ @param fontSize 字体大小\r
+ */\r
+ void TraingSetView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (label == nullptr)\r
+ {\r
+ label = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ label->SetPosition(left, top);\r
+ label->Resize(width, height);\r
+ // 设置标签的视图 ID\r
+ label->SetViewId(viewId);\r
+ // 设置标签的样式\r
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);\r
+ label->SetFont(fontName, fontSize);\r
+ // 设置标签的文本和其他属性\r
+ label->SetText(text);\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(0);\r
+ // 设置标签可见\r
+ label->SetVisible(true);\r
+ }\r
+ /*\r
+ InitButton:初始化按钮\r
+ @param button 按钮指针\r
+ @param left 按钮左边位置\r
+ @param top 按钮顶部位置\r
+ @param width 按钮宽度\r
+ @param height 按钮高度\r
+ @param viewId 按钮的视图 ID\r
+ */\r
+ void TraingSetView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)\r
+ {\r
+ // 设置按钮的背景颜色\r
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色\r
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色\r
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色\r
+ // 创建新按钮(如果当前按钮为空)\r
+ if (button == nullptr)\r
+ {\r
+ button = new UIButton();\r
+ }\r
+ button->SetPosition(left, top);\r
+ button->Resize(width, height);\r
+ button->SetViewId(viewId);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);\r
+ // 设置按钮的点击事件监听器为 TraingSetPresenter 的实例\r
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));\r
+ // 设置按钮可见\r
+ button->SetVisible(true);\r
+ }\r
+ /*\r
+ InitImageView:初始化图片\r
+ @param imageView 图片指针\r
+ @param left 图片左边位置\r
+ @param top 图片顶部位置\r
+ @param width 图片宽度\r
+ @param height 图片高度\r
+ @param viewId 图片的视图 ID\r
+ @param imagePath 图片路径\r
+ */\r
+ void TraingSetView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)\r
+ {\r
+ if (imageView == nullptr)\r
+ {\r
+ imageView = new UIImageView();\r
+ }\r
+ imageView->SetPosition(left, top);\r
+ imageView->Resize(width, height);\r
+ imageView->SetViewId(viewId);\r
+ imageView->SetSrc(imagePath);\r
+ imageView->SetVisible(true);\r
+ }\r
+ /* InitView:初始化界面*/\r
+ void TraingSetView ::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
+ // 初始化Button\r
+ InitButton(button1_, 43, 120, 380, 100, BUTTONTIME);\r
+ InitButton(button2_, 43, 240, 380, 100, BUTTONCALULI);\r
+ container_->Add(button1_);\r
+ container_->Add(button2_);\r
+\r
+ // 初始化Lable\r
+ InitLabel(label1_, 173, 52, 120, 35, "label1", "极限运动", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabel(label2_, 130, 150, 60, 35, "label2", "时长", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabel(label3_, 270, 155, 69, 23, "label3", "30 分钟", DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+ InitLabel(label4_, 130, 270, 60, 35, "label4", "卡路里", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitLabel(label5_, 270, 275, 60, 35, "label5", "1000 千卡", DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+ container_->Add(label1_);\r
+ container_->Add(label2_);\r
+ container_->Add(label3_);\r
+ container_->Add(label4_);\r
+ container_->Add(label5_);\r
+\r
+ // 初始化Image\r
+ InitImageView(image1_, 70, 150, 100, 100, "image1", imagePath_time);\r
+ InitImageView(image2_, 70, 270, 100, 100, "image2", imagePath_calories);\r
+ InitImageView(image3_, 380, 160, 100, 100, "image3", imagePath_iocn);\r
+ InitImageView(image4_, 380, 280, 100, 100, "image4", imagePath_iocn);\r
+ container_->Add(image1_);\r
+ container_->Add(image2_);\r
+ container_->Add(image3_);\r
+ container_->Add(image4_);\r
+ }\r
+ /* DeInit:删除组件 */\r
+ void TraingSetView::DeInit()\r
+ {\r
+ // 删除Label\r
+ if (label1_ != nullptr)\r
+ {\r
+ container_->Remove(label1_);\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ if (label2_ != nullptr)\r
+ {\r
+ container_->Remove(label2_);\r
+ delete label2_;\r
+ label2_ = nullptr;\r
+ }\r
+ if (label3_ != nullptr)\r
+ {\r
+ container_->Remove(label3_);\r
+ delete label3_;\r
+ label3_ = nullptr;\r
+ }\r
+ if (label4_ != nullptr)\r
+ {\r
+ container_->Remove(label4_);\r
+ delete label4_;\r
+ label4_ = nullptr;\r
+ }\r
+ if (label5_ != nullptr)\r
+ {\r
+ container_->Remove(label5_);\r
+ delete label5_;\r
+ label5_ = nullptr;\r
+ }\r
+\r
+ // 删除Button\r
+ if (button1_ != nullptr)\r
+ {\r
+ container_->Remove(button1_);\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+ if (button2_ != nullptr)\r
+ {\r
+ container_->Remove(button2_);\r
+ delete button2_;\r
+ button2_ = nullptr;\r
+ }\r
+\r
+ // 删除Image\r
+ if (image1_ != nullptr)\r
+ {\r
+ container_->Remove(image1_);\r
+ delete image1_;\r
+ image1_ = nullptr;\r
+ }\r
+ if (image2_ != nullptr)\r
+ {\r
+ container_->Remove(image2_);\r
+ delete image2_;\r
+ image2_ = nullptr;\r
+ }\r
+ if (image3_ != nullptr)\r
+ {\r
+ container_->Remove(image3_);\r
+ delete image3_;\r
+ image3_ = nullptr;\r
+ }\r
+ if (image4_ != nullptr)\r
+ {\r
+ container_->Remove(image4_);\r
+ delete image4_;\r
+ image4_ = nullptr;\r
+ }\r
+\r
+ // 删除容器\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll(); // 移除容器中的所有组件\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ }\r
+\r
+ void TraingSetView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+ void TraingSetView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ PreLoad();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingSetView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingSetPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingSetView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingSetPresenter>::OnTearDownView();\r
+ return;\r
+ }\r
+\r
+ void TraingSetView::OnStop()\r
+ {\r
+ View<TraingSetPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+ }\r
+}\r
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingStrongPresenter.h"
+// #include "TraingStrongView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingStrongPresenter *g_pTraingStrongPresenter = nullptr;
+
+ TraingStrongPresenter::TraingStrongPresenter()
+ {
+
+ g_pTraingStrongPresenter = this;
+ }
+
+ TraingStrongPresenter::~TraingStrongPresenter()
+ {
+
+ g_pTraingStrongPresenter = nullptr;
+ }
+
+ TraingStrongPresenter *TraingStrongPresenter::GetInstance()
+ {
+
+ return g_pTraingStrongPresenter;
+ }
+
+ void TraingStrongPresenter::OnStart()
+ {
+
+ Presenter<TraingStrongView>::OnStart();
+ }
+
+ void TraingStrongPresenter::OnPause(void)
+ {
+
+ Presenter<TraingStrongView>::OnPause();
+ }
+
+ void TraingStrongPresenter::OnResume(void)
+ {
+
+ Presenter<TraingStrongView>::OnResume();
+ }
+
+ void TraingStrongPresenter::OnStop(void)
+ {
+
+ Presenter<TraingStrongView>::OnStop();
+ }
+
+ bool TraingStrongPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingStrongPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), "Remind") == 0)
+ {
+ // 模拟心率监测,等待20秒
+ // std::this_thread::sleep_for(std::chrono::seconds(20));
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TraingStrongREMIND);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingStrongView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+ static const char *imagePath_blue = "/user/res/Training/bule.bin";
+ static const char *imagePath_yellow = "/user/res/Training/yellow.bin";
+ static const char *imagePath_orange = "/user/res/Training/orange.bin";
+ static const char *imagePath_green = "/user/res/Training/green.bin";
+
+ static TraingStrongView *g_pTraingStrongView{nullptr};
+
+ TraingStrongView::TraingStrongView()
+ {
+ g_pTraingStrongView = this;
+ }
+
+ TraingStrongView::~TraingStrongView()
+ {
+ DeInit();
+ g_pTraingStrongView = nullptr;
+ }
+
+ TraingStrongView *TraingStrongView::GetInstance()
+ {
+
+ return g_pTraingStrongView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingStrongView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(top, left);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_LINE_HEIGHT, 40);
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ // 设置中心对齐,这里先屏蔽一下
+ // label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingStrongView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingStrongPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingStrongPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingStrongView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(top, left);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingStrongView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+ // Add ScrollView to App
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0); // widget's left position and top position
+ scrollView1_->Resize(466, 466); // widget's width and height
+ scrollView1_->SetViewId("scrollView1"); // Set style
+ scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ scrollView1_->SetReboundSize(100);
+ scrollView1_->SetScrollBlankSize(52);
+ scrollView1_->SetHorizontalScrollState(false);
+ // Set additional property
+ // Add to rootView
+ container_->Add(scrollView1_);
+ scrollView1_->SetVisible(true);
+
+ // 初始化Lable
+ InitLabel(label1_, 52, 173, 120, 35, "label1", "训练强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(label2_, 133, 33, 60, 35, "label2", "训练强度用于判断是否训练不足或\n者训练太过,到底使心率增加多少\n的运动强度才是最合适的。", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label3_, 305, 33, 69, 23, "label3", "该强度区间是对应靶心率(由个人\n基本资料计算得出)强弱的实时状\n态显示,有助于提高训练质量。", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label4_, 465, 33, 60, 35, "label4", "训练状态代表的意义:", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label5_, 505, 97, 60, 35, "label5", "较低强度-热身运动\n中等强度-燃脂区\n高等强度-提升心肺机能\n超高强度-专业运动员", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ InitLabel(label6_, 740, 51, 60, 35, "label5", "注:该训练强度并非专业运动评\n估,数据仅供参考。", DEFAULT_VECTOR_FONT_FILENAME, 26);
+ label6_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff));
+ scrollView1_->Add(label1_);
+ scrollView1_->Add(label2_);
+ scrollView1_->Add(label3_);
+ scrollView1_->Add(label4_);
+ scrollView1_->Add(label5_);
+ scrollView1_->Add(label6_);
+
+ // 初始化Image
+ InitImageView(image1_, 510, 60, 100, 100, "image1", imagePath_blue);
+ InitImageView(image2_, 550, 60, 100, 100, "image2", imagePath_green);
+ InitImageView(image3_, 590, 60, 100, 100, "image3", imagePath_orange);
+ InitImageView(image4_, 630, 60, 100, 100, "image4", imagePath_yellow);
+ scrollView1_->Add(image1_);
+ scrollView1_->Add(image2_);
+ scrollView1_->Add(image3_);
+ scrollView1_->Add(image4_);
+
+ // Add ImageView to App
+ if (image5_ == nullptr)
+ {
+ image5_ = new UIImageView();
+ }
+ image5_->SetPosition(183, 813); // widget's left position and top position
+ image5_->Resize(100, 100); // widget's width and height
+ image5_->SetViewId("image3"); // Set style
+ // Set additional property
+ // Add to scrollView2
+ scrollView1_->Add(image5_);
+ image5_->SetVisible(true);
+ }
+ /* DeInit:删除组件 */
+ void TraingStrongView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingStrongView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingStrongView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingStrongPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingStrongView::OnSetUpView()
+ {
+
+ View<TraingStrongPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingStrongView::OnTearDownView()
+ {
+
+ View<TraingStrongPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingStrongView::OnStop()
+ {
+ View<TraingStrongPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
#include "ui_resource_image.h"\r
#include <ui_scroll_view.h>\r
#include "components/ui_button.h"\r
-#include "components/ui_view_group.h"\r
-#include "common/image_cache_manager.h"\r
-\r
namespace OHOS\r
{\r
static TraingView *g_pTraingView{nullptr};\r
\r
TraingView::TraingView()\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::TraingView");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+\r
g_pTraingView = this;\r
}\r
\r
TraingView::~TraingView()\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::~TraingView");\r
- RemoveAll();\r
DeInit();\r
g_pTraingView = nullptr;\r
}\r
\r
TraingView *TraingView::GetInstance()\r
{\r
+\r
return g_pTraingView;\r
}\r
- bool TraingView::InitLable()\r
- {\r
- // 检查标签指针是否为空\r
- if (titleLabel == nullptr)\r
- {\r
- titleLabel = new UILabel();\r
- }\r
- // 设置标签的位置和大小\r
- titleLabel->SetPosition(173, 52);\r
- titleLabel->Resize(200, 60);\r
- // 设置标签的视图 ID\r
- titleLabel->SetViewId("titleLabel");\r
- // 设置标签的样式\r
- titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- // 设置标签的文本和其他属性\r
- titleLabel->SetText("快速训练");\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- titleLabel->SetRollSpeed(0);\r
- Add(titleLabel);\r
-\r
- return true;\r
- }\r
- /* -------------------------------------------------------------------------- */\r
- // 加载图片函数(针对UILabelButtonExt)\r
- bool TraingView::LoadImage(UILabelButtonExt *view, uint32_t resId)\r
+\r
+ void TraingView::Init()\r
{\r
- std::string file = TRAINING_IAMGES;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId);\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
- if (image == nullptr)\r
+ if (container_ == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::LoadImage %x fail", resId);\r
- return false;\r
+ container_ = new UIViewGroup();\r
+ container_->SetPosition(0, 0, 466, 466);\r
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
}\r
- // Assuming SetImageSrc is the correct function for UILabelButtonExt\r
- view->SetImageSrc(image, nullptr);\r
- return true;\r
- }\r
\r
- // 加载图片函数(针对UIImageView)\r
- bool TraingView::LoadImage(UIImageView *view, uint32_t resId)\r
- {\r
- std::string file = TRAINING_IAMGES;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId);\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
- if (image == nullptr)\r
+ // Add Label to App\r
+ if (label1_ == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::LoadImage %x fail", resId);\r
- return false;\r
+ label1_ = new UILabel();\r
}\r
- view->SetSrc(image); // Assuming SetSrc is the correct function for UIImageView\r
- return true;\r
- }\r
+ label1_->SetPosition(173, 52); // widget's left position and top position\r
+ label1_->Resize(200, 60); // widget's width and height\r
+ label1_->SetViewId("label1"); // Set style\r
+ label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
\r
- bool TraingView::AddButton()\r
- {\r
- struct ButtonInfo\r
- {\r
- std::string text;\r
- uint32_t defaultImgSrc;\r
- UILabelButtonExt *button;\r
- uint16_t posX;\r
- uint16_t posY;\r
- };\r
-\r
- ButtonInfo buttons[] = {\r
- {"健走", TRAINING_BUTTONGROUND2, Button1, 86, 118},\r
- {"骑行", TRAINING_BOUTTONGROUND, Button2, 236, 118},\r
- {"跑步", TRAINING_BOUTTONGROUND, Button3, 86, 268},\r
- {"更多", TRAINING_MORE, ButtonMore, 236, 268}};\r
-\r
- for (auto &buttonInfo : buttons)\r
- {\r
- if (buttonInfo.button == nullptr)\r
- {\r
- buttonInfo.button = new UILabelButtonExt();\r
- }\r
-\r
- if (!LoadImage(buttonInfo.button, buttonInfo.defaultImgSrc))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__);\r
- return false;\r
- }\r
-\r
- buttonInfo.button->SetPosition(buttonInfo.posX, buttonInfo.posY);\r
- buttonInfo.button->Resize(140, 140);\r
- buttonInfo.button->SetText(buttonInfo.text.c_str());\r
- buttonInfo.button->SetLabelPosition(0, 70);\r
- buttonInfo.button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
- buttonInfo.button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff19ff41, UIButton::PRESSED);\r
- buttonInfo.button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- Add(buttonInfo.button);\r
- }\r
-\r
- return true;\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
- bool TraingView::InitImage()\r
- {\r
- struct ImageInfo\r
- {\r
- UIImageView *image;\r
- const int imagePath;\r
- uint16_t posX;\r
- uint16_t posY;\r
- const char *viewId;\r
- };\r
-\r
- ImageInfo images[] = {\r
- {image1, TRAINING_WALKING_BIG, 126, 298, "image3"},\r
- {image2, TRAINING_RIDING_BIG2, 276, 148, "image2"},\r
- {image3, TRAINING_RUNNING_BIG, 126, 148, "image1"}};\r
-\r
- for (auto &imageInfo : images)\r
- {\r
- if (imageInfo.image == nullptr)\r
- {\r
- imageInfo.image = new UIImageView();\r
- }\r
- imageInfo.image->SetPosition(imageInfo.posX, imageInfo.posY);\r
- imageInfo.image->Resize(100, 100);\r
- if (!LoadImage(imageInfo.image, imageInfo.imagePath))\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__);\r
- return false;\r
- }\r
- imageInfo.image->SetViewId(imageInfo.viewId);\r
- Add(imageInfo.image);\r
- }\r
-\r
- return true;\r
- }\r
- /* -------------------------------------------------------------------------- */\r
- bool TraingView::InitView()\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::InitView()");\r
- if (!InitLable())\r
+ // Add to rootView\r
+ container_->Add(label1_);\r
+ label1_->SetVisible(true);\r
+\r
+ // Add Button to App\r
+ if (button3_ == nullptr)\r
{\r
- printf("InitLable error!\n");\r
- };\r
- if (!AddButton())\r
+ button3_ = new UIButton();\r
+ }\r
+ button3_->SetPosition(236, 268); // widget's left position and top position\r
+ button3_->Resize(140, 140); // widget's width and height\r
+ button3_->SetViewId(BUTTONMORE); // Set style\r
+ button3_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ button3_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *button3defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/More.bin";\r
+#else\r
+ const char *button3defaultImgSrc = PNG_TRAING_BOUTTONMORE_IMAGE;\r
+#endif\r
+ char *button3triggeredImgSrc = nullptr;\r
+ button3_->SetImageSrc(button3defaultImgSrc, button3triggeredImgSrc);\r
+ button3_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED);\r
+ button3_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ button3_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ // Add the CallBack about events\r
+ UIView::OnClickListener *button3Click = static_cast<UIView::OnClickListener *>(TraingPresenter::GetInstance());\r
+ button3_->SetOnClickListener(button3Click);\r
+ // Add to rootView\r
+ container_->Add(button3_);\r
+ button3_->SetVisible(true);\r
+\r
+ // Add Button to App\r
+ if (button4_ == nullptr)\r
{\r
- printf("AddButton error!\n");\r
- };\r
- if (!InitImage())\r
+ button4_ = new UIButton();\r
+ }\r
+ button4_->SetPosition(86, 118); // widget's left position and top position\r
+ button4_->Resize(140, 140); // widget's width and height\r
+ button4_->SetViewId(BUTTON2); // Set style\r
+ button4_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ button4_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *button4defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Buttonground2.bin";\r
+#else\r
+ const char *button4defaultImgSrc = PNG_TRAING_BUTTONGRONG2_IMAGE;\r
+#endif\r
+ char *button4triggeredImgSrc = nullptr;\r
+ button4_->SetImageSrc(button4defaultImgSrc, button4triggeredImgSrc);\r
+ button4_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED);\r
+ button4_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ button4_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ // Add the CallBack about events\r
+ UIView::OnClickListener *button4Click = static_cast<UIView::OnClickListener *>(TraingPresenter::GetInstance());\r
+ button4_->SetOnClickListener(button4Click);\r
+ // Add to rootView\r
+ container_->Add(button4_);\r
+ button4_->SetVisible(true);\r
+\r
+ // Add Button to App\r
+ if (button1_ == nullptr)\r
{\r
- printf("InitImage error!\n");\r
- };\r
- // SetCoverable(true);\r
- return true;\r
- }\r
+ button1_ = new UIButton();\r
+ }\r
+ button1_->SetPosition(86, 268); // widget's left position and top position\r
+ button1_->Resize(140, 140); // widget's width and height\r
+ button1_->SetViewId(BUTTON3); // Set style\r
+ button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
\r
- void TraingView::DeInit()\r
- {\r
- UIImageView *imageViews[] = {image1, image2, image3};\r
- UIButton *buttons[] = {ButtonMore, Button1, Button3, Button2};\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *button1defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Bouttonground.bin";\r
+#else\r
+ const char *button1defaultImgSrc = PNG_TRAING_BUTTONGRONG_IMAGE;\r
+#endif\r
+ char *button1triggeredImgSrc = nullptr;\r
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
+ button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED);\r
+ button1_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ // Add the CallBack about events\r
+ UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(TraingPresenter::GetInstance());\r
+ button1_->SetOnClickListener(button1Click);\r
+ // Add to rootView\r
+ container_->Add(button1_);\r
+ button1_->SetVisible(true);\r
\r
- for (auto &imageView : imageViews)\r
+ // Add Button to App\r
+ if (button2_ == nullptr)\r
{\r
- if (imageView != nullptr)\r
- {\r
- delete imageView;\r
- imageView = nullptr;\r
- }\r
+ button2_ = new UIButton();\r
}\r
+ button2_->SetPosition(236, 118); // widget's left position and top position\r
+ button2_->Resize(140, 140); // widget's width and height\r
+ button2_->SetViewId(BUTTON1); // Set style\r
+ button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
\r
- for (auto &button : buttons)\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *button2defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Bouttonground.bin";\r
+#else\r
+ const char *button2defaultImgSrc = PNG_TRAING_BUTTONGRONG_IMAGE;\r
+#endif\r
+ char *button2triggeredImgSrc = nullptr;\r
+ button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);\r
+ button2_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED);\r
+ button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, 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 *>(TraingPresenter::GetInstance());\r
+ button2_->SetOnClickListener(button2Click);\r
+ // Add to rootView\r
+ container_->Add(button2_);\r
+ button2_->SetVisible(true);\r
+\r
+ // Add ImageView to App\r
+ if (image1_ == nullptr)\r
{\r
- if (button != nullptr)\r
- {\r
- delete button;\r
- button = nullptr;\r
- }\r
+ image1_ = new UIImageView();\r
}\r
+ image1_->SetPosition(276, 148); // widget's left position and top position\r
+ image1_->Resize(100, 100); // widget's width and height\r
+ image1_->SetViewId("image2"); // Set style\r
+\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *image1imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/riding-big2.bin";\r
+#else\r
+ const char *image1imagesPath = PNG_TRAING_RIDINGBIG_IMAGE;\r
+#endif\r
+ image1_->SetSrc(image1imagesPath);\r
+\r
+ // Add to rootView\r
+ container_->Add(image1_);\r
+ image1_->SetVisible(true);\r
+\r
+ // Add Label to App\r
+ if (label2_ == nullptr)\r
+ {\r
+ label2_ = new UILabel();\r
+ }\r
+ label2_->SetPosition(286, 210); // 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, 20);\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, 20);\r
+\r
+ // Add to rootView\r
+ container_->Add(label2_);\r
+ label2_->SetVisible(true);\r
\r
- if (titleLabel != nullptr)\r
+ // Add ImageView to App\r
+ if (image3_ == nullptr)\r
{\r
- delete titleLabel;\r
- titleLabel = nullptr;\r
+ image3_ = new UIImageView();\r
}\r
+ image3_->SetPosition(126, 298); // widget's left position and top position\r
+ image3_->Resize(100, 100); // widget's width and height\r
+ image3_->SetViewId("image3"); // Set style\r
+\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *image3imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/running-big.bin";\r
+#else\r
+ const char *image3imagesPath = PNG_TRAING_RUNNINGBIG_IMAGE;\r
+#endif\r
+ image3_->SetSrc(image3imagesPath);\r
+\r
+ // Add to rootView\r
+ container_->Add(image3_);\r
+ image3_->SetVisible(true);\r
+\r
+ // Add Label to App\r
+ if (label3_ == nullptr)\r
+ {\r
+ label3_ = new UILabel();\r
+ }\r
+ label3_->SetPosition(135, 210); // 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
+\r
+ // Set additional property\r
+ label3_->SetText("健走");\r
+ label3_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\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 rootView\r
+ container_->Add(label3_);\r
+ label3_->SetVisible(true);\r
+\r
+ // Add ImageView to App\r
+ if (image5_ == nullptr)\r
+ {\r
+ image5_ = new UIImageView();\r
+ }\r
+ image5_->SetPosition(126, 148); // widget's left position and top position\r
+ image5_->Resize(100, 100); // widget's width and height\r
+ image5_->SetViewId("image1"); // Set style\r
+\r
+ // Set additional property\r
+#ifdef _WIN32\r
+ char *image5imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/walking-big.bin";\r
+#else\r
+ const char *image5imagesPath = PNG_TRAING_WALKINGBIG_IMAGE;\r
+#endif\r
+ image5_->SetSrc(image5imagesPath);\r
+\r
+ // Add to rootView\r
+ container_->Add(image5_);\r
+ image5_->SetVisible(true);\r
+\r
+ // Add Label to App\r
+ if (label4_ == nullptr)\r
+ {\r
+ label4_ = new UILabel();\r
+ }\r
+ label4_->SetPosition(131, 365); // widget's left position and top position\r
+ label4_->Resize(200, 60); // widget's width and height\r
+ label4_->SetViewId("label4"); // Set style\r
+ label4_->SetStyle(STYLE_TEXT_FONT, 20);\r
+\r
+ // Set additional property\r
+ label4_->SetText("跑步");\r
+ label4_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ label4_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label4_->SetRollSpeed(0);\r
+ label4_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+\r
+ // Add to rootView\r
+ container_->Add(label4_);\r
+ label4_->SetVisible(true);\r
}\r
\r
- void TraingView::PreLoad(void)\r
+ void TraingView::DeInit()\r
{\r
- if (!viewiInitStatus)\r
+ if (container_ != nullptr)\r
{\r
- InitView();\r
- viewiInitStatus = true;\r
+ container_->RemoveAll();\r
+ delete container_;\r
+ container_ = nullptr;\r
}\r
- // if (!resLoadStatus)\r
- // {\r
- // resLoadStatus = true;\r
- // }\r
+ if (label1_ != nullptr)\r
+ {\r
+ delete label1_;\r
+ label1_ = nullptr;\r
+ }\r
+ if (button3_ != nullptr)\r
+ {\r
+ delete button3_;\r
+ button3_ = nullptr;\r
+ }\r
+ if (button4_ != nullptr)\r
+ {\r
+ delete button4_;\r
+ button4_ = nullptr;\r
+ }\r
+ if (button1_ != nullptr)\r
+ {\r
+ delete button1_;\r
+ button1_ = nullptr;\r
+ }\r
+ if (button2_ != nullptr)\r
+ {\r
+ delete button2_;\r
+ button2_ = nullptr;\r
+ }\r
+ if (image1_ != nullptr)\r
+ {\r
+ delete image1_;\r
+ image1_ = nullptr;\r
+ }\r
+ if (label2_ != nullptr)\r
+ {\r
+ delete label2_;\r
+ label2_ = nullptr;\r
+ }\r
+ if (image3_ != nullptr)\r
+ {\r
+ delete image3_;\r
+ image3_ = nullptr;\r
+ }\r
+ if (label3_ != nullptr)\r
+ {\r
+ delete label3_;\r
+ label3_ = nullptr;\r
+ }\r
+ if (image5_ != nullptr)\r
+ {\r
+ delete image5_;\r
+ image5_ = nullptr;\r
+ }\r
+ if (label4_ != nullptr)\r
+ {\r
+ delete label4_;\r
+ label4_ = nullptr;\r
+ }\r
+ }\r
+\r
+ UIView *TraingView::GetView()\r
+ {\r
+ Init();\r
+ return container_;\r
+ }\r
+\r
+ void TraingView::OnStart()\r
+ {\r
+ container_ = new UIViewGroup();\r
+ if (container_ == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0);\r
+ container_->SetWidth(Screen::GetInstance().GetWidth());\r
+ container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+ // 创建 draglistener 实例并设置为拖动监听器\r
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingPresenter::GetInstance());\r
+ if (draglistener == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ container_->SetOnDragListener(draglistener);\r
+\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+\r
+ GetView();\r
+ RootView::GetInstance()->Add(container_);\r
+ }\r
+\r
+ void TraingView::OnSetUpView()\r
+ {\r
+\r
+ View<TraingPresenter>::OnSetUpView();\r
+ Draw();\r
+ }\r
+\r
+ void TraingView::OnTearDownView()\r
+ {\r
+\r
+ View<TraingPresenter>::OnTearDownView();\r
+ return;\r
}\r
\r
- void TraingView::UnLoad(void)\r
+ void TraingView::OnStop()\r
{\r
- // if (resLoadStatus)\r
- // {\r
- // //ImageCacheManager::GetInstance().UnloadAllInMultiRes(TRAINING_IAMGES);\r
- // resLoadStatus = false;\r
- // }\r
+ View<TraingPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
}\r
}\r
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/include/TraingWinPresenter.h"
+// #include "TraingWinView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingWinPresenter *g_pTraingWinPresenter = nullptr;
+
+ TraingWinPresenter::TraingWinPresenter()
+ {
+
+ g_pTraingWinPresenter = this;
+ }
+
+ TraingWinPresenter::~TraingWinPresenter()
+ {
+ g_pTraingWinPresenter = nullptr;
+ }
+
+ TraingWinPresenter *TraingWinPresenter::GetInstance()
+ {
+
+ return g_pTraingWinPresenter;
+ }
+
+ void TraingWinPresenter::OnStart()
+ {
+
+ Presenter<TraingWinView>::OnStart();
+ }
+
+ void TraingWinPresenter::OnPause(void)
+ {
+
+ Presenter<TraingWinView>::OnPause();
+ }
+
+ void TraingWinPresenter::OnResume(void)
+ {
+
+ Presenter<TraingWinView>::OnResume();
+ }
+
+ void TraingWinPresenter::OnStop(void)
+ {
+
+ Presenter<TraingWinView>::OnStop();
+ }
+
+ bool TraingWinPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ // {
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // NativeAbility::GetInstance().ChangeSlice(preSlice);
+ // }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingWinPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // 根据控件id查找是哪个控件触发了点击回调
+ if (strcmp(view.GetViewId(), BUTTONOK) == 0)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);
+ }
+ return true;
+ }
+}
--- /dev/null
+
+#include "traing/include/TraingWinView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+ static const char *imagePath_win = "/user/res/Training/win.bin";
+ static TraingWinView *g_pTraingWinView{nullptr};
+ TraingWinView::TraingWinView()
+ {
+ g_pTraingWinView = this;
+ }
+
+ TraingWinView::~TraingWinView()
+ {
+ DeInit();
+ g_pTraingWinView = nullptr;
+ }
+ TraingWinView *TraingWinView::GetInstance()
+ {
+
+ return g_pTraingWinView;
+ }
+
+ /**
+ * 创建包含图片文件路径的数组
+ * @param basePath 包含图片文件的基本路径
+ * @param fileExtension 图片文件的扩展名
+ * @param numImages 图片文件的数量
+ * @return 返回包含图片文件路径的数组
+ */
+ const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
+ {
+ const char **imagePaths = new const char *[numImages];
+ char buffer[256];
+ for (int i = 0; i < numImages; i++)
+ {
+ snprintf(buffer, sizeof(buffer), "%s/%d.%s", basePath, i + 1, fileExtension);
+ imagePaths[i] = strdup(buffer);
+ }
+ return imagePaths;
+ }
+
+ /**
+ * 释放图片文件路径数组占用的内存
+ * @param imagePaths 图片文件路径数组
+ * @param numImages 图片文件的数量
+ */
+ void FreeImagePathsArray(const char **imagePaths, int numImages)
+ {
+ for (int i = 0; i < numImages; i++)
+ {
+ free((void *)imagePaths[i]);
+ }
+ delete[] imagePaths;
+ }
+ /**************************************************/
+ /**
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingWinView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /**
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingWinView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingWinPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingWinPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+
+ /**
+ * 初始化图片视图
+ * @param imageView 图片视图指针
+ * @param left 图片左边位置
+ * @param top 图片顶部位置
+ * @param width 图片宽度
+ * @param height 图片高度
+ * @param viewId 图片的视图 ID
+ * @param imagePath 图片路径
+ */
+ void TraingWinView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+
+ /**
+ * @brief 初始化UIImageAnimatorView,并设置为GIF动画。
+ *
+ * 该函数用于使用提供的GIF图像和属性初始化UIImageAnimatorView。
+ *
+ * @param imageAnimator 要初始化的UIImageAnimatorView对象的引用。
+ * @param paths GIF图像文件路径的数组。
+ * @param numFrames GIF中的帧数。
+ * @param left 视图的左侧位置。
+ * @param top 视图的顶部位置。
+ * @param width 视图的宽度。
+ * @param height 视图的高度。
+ * @param viewId 视图的ID。
+ * @param time 视图的帧速
+ * @return 如果初始化成功则返回true,否则返回false。
+ */
+ void TraingWinView::InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId, int time)
+ {
+ if (imageAnimator == nullptr)
+ {
+ imageAnimator = new UIImageAnimatorView();
+ }
+ imageAnimator->SetPosition(left, top);
+ imageAnimator->Resize(width, height);
+ imageAnimator->SetViewId(viewId);
+ imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+ imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+
+ ImageAnimatorInfo *imageAnimatorInfo = new ImageAnimatorInfo[numFrames];
+ for (int i = 0; i < numFrames; i++)
+ {
+ imageAnimatorInfo[i].imagePath = imagePaths[i];
+ imageAnimatorInfo[i].pos.x = left;
+ imageAnimatorInfo[i].pos.y = top;
+ imageAnimatorInfo[i].width = width;
+ imageAnimatorInfo[i].height = height;
+ imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
+ }
+
+ imageAnimator->SetImageAnimatorSrc(imageAnimatorInfo, numFrames, time); // 200 is the default delay time
+ imageAnimator->SetTimeOfPause(time);
+ imageAnimator->SetRepeatTimes(1);
+ imageAnimator->SetReverse(true);
+ imageAnimator->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingWinView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+
+ // 初始化Lable
+ InitLabel(label1_, 155, 52, 195, 35, "label1", "目标已达成", DEFAULT_VECTOR_FONT_FILENAME, 35);
+ container_->Add(label1_);
+ InitLabel(label2_, 108, 215, 146, 35, "label2", "10,000", DEFAULT_VECTOR_FONT_FILENAME, 80);
+ label2_->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ container_->Add(label2_);
+ InitLabel(label3_, 132, 307, 146, 35, "label3", "完成目标", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ container_->Add(label3_);
+ InitLabel(label4_, 280, 307, 146, 35, "label3", "100%", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ label4_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ container_->Add(label4_);
+
+ /*
+ 初始化image
+ InitImageView(image1_, 173, 100, 120, 120, "image1", imagePath_win);
+ container_->Add(image1_);
+ */
+
+ // 初始化图片数组
+ const char *basePath = "/user/res/Training/win/";
+ const char *fileExtension = "bin";
+ const char **imagePaths = CreateImagePathsArray(basePath, fileExtension, 94);
+ InitImageAnimatorSource(imageAnimator, imagePaths, 94, 173, 100, 120, 120, "imageAnimator1", 10);
+ container_->Add(imageAnimator);
+ // FreeImagePathsArray(imagePaths, 94); //删除数组,释放内存
+
+ // 初始化Button
+ InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
+ // Set additional property
+ char *button1defaultImgSrc = "/user/res/Training/buttonok.bin";
+ char *button1triggeredImgSrc = nullptr;
+ button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);
+ container_->Add(button1_);
+ }
+
+ /* DeInit:删除组件*/
+ void TraingWinView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingWinView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ imageAnimator->Start();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingWinView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingWinPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingWinView::OnSetUpView()
+ {
+
+ View<TraingWinPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingWinView::OnTearDownView()
+ {
+
+ View<TraingWinPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingWinView::OnStop()
+ {
+ View<TraingWinPresenter>::OnStop();
+ imageAnimator->Stop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}
--- /dev/null
+\r
+#include "traing/traing_card/Traing_CardView.h"\r
+\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include <ui_scroll_view.h>\r
+#include "components/ui_button.h"\r
+#include "components/ui_view_group.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS\r
+{\r
+ static Traing_CardView *g_pTraing_CardView{nullptr};\r
+\r
+ Traing_CardView::Traing_CardView()\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::Traing_CardView");\r
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ g_pTraing_CardView = this;\r
+ }\r
+\r
+ Traing_CardView::~Traing_CardView()\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::~Traing_CardView");\r
+ RemoveAll();\r
+ DeInit();\r
+ g_pTraing_CardView = nullptr;\r
+ }\r
+\r
+ Traing_CardView *Traing_CardView::GetInstance()\r
+ {\r
+ return g_pTraing_CardView;\r
+ }\r
+ bool Traing_CardView::InitLable()\r
+ {\r
+ // 检查标签指针是否为空\r
+ if (titleLabel == nullptr)\r
+ {\r
+ titleLabel = new UILabel();\r
+ }\r
+ // 设置标签的位置和大小\r
+ titleLabel->SetPosition(173, 52);\r
+ titleLabel->Resize(200, 60);\r
+ // 设置标签的视图 ID\r
+ titleLabel->SetViewId("titleLabel");\r
+ // 设置标签的样式\r
+ titleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ // 设置标签的文本和其他属性\r
+ titleLabel->SetText("快速训练");\r
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ titleLabel->SetRollSpeed(0);\r
+ Add(titleLabel);\r
+\r
+ return true;\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
+ // 加载图片函数(针对UILabelButtonExt)\r
+ bool Traing_CardView::LoadImage(UILabelButtonExt *view, uint32_t resId)\r
+ {\r
+ std::string file = TRAINING_IAMGES;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId);\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
+ if (image == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::LoadImage %x fail", resId);\r
+ return false;\r
+ }\r
+ // Assuming SetImageSrc is the correct function for UILabelButtonExt\r
+ view->SetImageSrc(image, nullptr);\r
+ return true;\r
+ }\r
+\r
+ // 加载图片函数(针对UIImageView)\r
+ bool Traing_CardView::LoadImage(UIImageView *view, uint32_t resId)\r
+ {\r
+ std::string file = TRAINING_IAMGES;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId);\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
+ if (image == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::LoadImage %x fail", resId);\r
+ return false;\r
+ }\r
+ view->SetSrc(image); // Assuming SetSrc is the correct function for UIImageView\r
+ return true;\r
+ }\r
+\r
+ bool Traing_CardView::AddButton()\r
+ {\r
+ struct ButtonInfo\r
+ {\r
+ std::string text;\r
+ uint32_t defaultImgSrc;\r
+ UILabelButtonExt *button;\r
+ uint16_t posX;\r
+ uint16_t posY;\r
+ };\r
+\r
+ ButtonInfo buttons[] = {\r
+ {"健走", TRAINING_BUTTONGROUND2, Button1, 86, 118},\r
+ {"骑行", TRAINING_BOUTTONGROUND, Button2, 236, 118},\r
+ {"跑步", TRAINING_BOUTTONGROUND, Button3, 86, 268},\r
+ {"更多", TRAINING_MORE, ButtonMore, 236, 268}};\r
+\r
+ for (auto &buttonInfo : buttons)\r
+ {\r
+ if (buttonInfo.button == nullptr)\r
+ {\r
+ buttonInfo.button = new UILabelButtonExt();\r
+ }\r
+\r
+ if (!LoadImage(buttonInfo.button, buttonInfo.defaultImgSrc))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__);\r
+ return false;\r
+ }\r
+\r
+ buttonInfo.button->SetPosition(buttonInfo.posX, buttonInfo.posY);\r
+ buttonInfo.button->Resize(140, 140);\r
+ buttonInfo.button->SetText(buttonInfo.text.c_str());\r
+ buttonInfo.button->SetLabelPosition(0, 70);\r
+ buttonInfo.button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+ buttonInfo.button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff19ff41, UIButton::PRESSED);\r
+ buttonInfo.button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ Add(buttonInfo.button);\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
+ bool Traing_CardView::InitImage()\r
+ {\r
+ struct ImageInfo\r
+ {\r
+ UIImageView *image;\r
+ const int imagePath;\r
+ uint16_t posX;\r
+ uint16_t posY;\r
+ const char *viewId;\r
+ };\r
+\r
+ ImageInfo images[] = {\r
+ {image1, TRAINING_WALKING_BIG, 126, 298, "image3"},\r
+ {image2, TRAINING_RIDING_BIG2, 276, 148, "image2"},\r
+ {image3, TRAINING_RUNNING_BIG, 126, 148, "image1"}};\r
+\r
+ for (auto &imageInfo : images)\r
+ {\r
+ if (imageInfo.image == nullptr)\r
+ {\r
+ imageInfo.image = new UIImageView();\r
+ }\r
+ imageInfo.image->SetPosition(imageInfo.posX, imageInfo.posY);\r
+ imageInfo.image->Resize(100, 100);\r
+ if (!LoadImage(imageInfo.image, imageInfo.imagePath))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__);\r
+ return false;\r
+ }\r
+ imageInfo.image->SetViewId(imageInfo.viewId);\r
+ Add(imageInfo.image);\r
+ }\r
+\r
+ return true;\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
+ bool Traing_CardView::InitView()\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::InitView()");\r
+ if (!InitLable())\r
+ {\r
+ printf("InitLable error!\n");\r
+ };\r
+ if (!AddButton())\r
+ {\r
+ printf("AddButton error!\n");\r
+ };\r
+ if (!InitImage())\r
+ {\r
+ printf("InitImage error!\n");\r
+ };\r
+ // SetCoverable(true);\r
+ return true;\r
+ }\r
+\r
+ void Traing_CardView::DeInit()\r
+ {\r
+ UIImageView *imageViews[] = {image1, image2, image3};\r
+ UIButton *buttons[] = {ButtonMore, Button1, Button3, Button2};\r
+\r
+ for (auto &imageView : imageViews)\r
+ {\r
+ if (imageView != nullptr)\r
+ {\r
+ delete imageView;\r
+ imageView = nullptr;\r
+ }\r
+ }\r
+\r
+ for (auto &button : buttons)\r
+ {\r
+ if (button != nullptr)\r
+ {\r
+ delete button;\r
+ button = nullptr;\r
+ }\r
+ }\r
+\r
+ if (titleLabel != nullptr)\r
+ {\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ }\r
+ }\r
+\r
+ void Traing_CardView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ // if (!resLoadStatus)\r
+ // {\r
+ // resLoadStatus = true;\r
+ // }\r
+ }\r
+\r
+ void Traing_CardView::UnLoad(void)\r
+ {\r
+ // if (resLoadStatus)\r
+ // {\r
+ // //ImageCacheManager::GetInstance().UnloadAllInMultiRes(TRAINING_IAMGES);\r
+ // resLoadStatus = false;\r
+ // }\r
+ }\r
+}\r
--- /dev/null
+#ifndef _Traing_CARD_VIEW_H
+#define _Traing_CARD_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+namespace OHOS
+{
+#define BUTTON1 "button1" // 按键1
+#define BUTTON2 "button2" // 按键2
+#define BUTTON3 "button3" // 按键3
+#define BUTTONMORE "button4" // 按键 更多
+
+ class Traing_CardView : public UICardPage
+ {
+
+ public:
+ Traing_CardView();
+ virtual ~Traing_CardView();
+ static Traing_CardView *GetInstance(void);
+
+ bool InitView();
+ void DeInit();
+
+ bool AddButton();
+ bool InitImage();
+ bool InitLable();
+
+ void PreLoad(void) override;
+ void UnLoad(void) override;
+
+ bool LoadImage(UIImageView *view, uint32_t resId);
+ bool LoadImage(UILabelButtonExt *view, uint32_t resId);
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ Traing_CardView(Traing_CardView &&) = delete;
+ Traing_CardView &operator=(Traing_CardView &&) = delete;
+
+ UILabelButtonExt *Button1 = nullptr;
+ UILabelButtonExt *Button2 = nullptr;
+ UILabelButtonExt *Button3 = nullptr;
+ UILabelButtonExt *ButtonMore = nullptr;
+
+ UILabel *titleLabel = nullptr;
+ UIImageView *image1 = nullptr;
+ UIImageView *image2 = nullptr;
+ UIImageView *image3 = nullptr;
+ UIImageView *imagemore = nullptr;
+
+ bool viewiInitStatus{false};
+ bool resLoadStatus{false};
+ };
+} // namespace OHOS
+#endif // Traing_PRESENTER_H
--- /dev/null
+#ifndef _TraingRecord_PRESENTER_H
+#define _TraingRecord_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingRecordView.h"
+
+namespace OHOS
+{
+ class TraingRecordView;
+
+ class TraingRecordPresenter : public Presenter<TraingRecordView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingRecordPresenter();
+ virtual ~TraingRecordPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ static TraingRecordPresenter *GetInstance();
+
+ private:
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+#ifndef _TraingRecord_VIEW_H
+#define _TraingRecord_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include <ui_scroll_view.h>
+#include "components/ui_view_group.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_button.h"
+#include "components/ui_image_animator.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_chart.h"
+#include "components/ui_list.h"
+#include "components/icon_adapter.h"
+#include "wearable_log.h"
+#include "ohos_types.h"
+#include "components/ui_card_page.h"
+
+#include "TraingRecordPresenter.h"
+namespace OHOS
+{
+#define BUTTONNOTE "button1"
+
+ class TraingRecordPresenter;
+ class TraingRecordView : public View<TraingRecordPresenter>
+ {
+
+ public:
+ TraingRecordView();
+ virtual ~TraingRecordView();
+ static TraingRecordView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
+ void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize);
+ void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId);
+ void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath);
+ void InitList();
+ void PreLoad(void);
+
+ // 通过函数改变
+ void SetLabel();
+ void SetButton();
+
+ private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingRecordView(TraingRecordView &&) = delete;
+ TraingRecordView &operator=(TraingRecordView &&) = delete;
+
+ UIViewGroup *container_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *label2_ = nullptr;
+
+ bool viewiInitStatus{false};
+ };
+} // namespace OHOS
+#endif // TraingRecord_PRESENTER_H
--- /dev/null
+#include "AppViewIDs.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traingrecord/include/TraingRecordPresenter.h"
+// #include "TraingRecordView.h"
+
+namespace OHOS
+{
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingRecordPresenter *g_pTraingRecordPresenter = nullptr;
+
+ TraingRecordPresenter::TraingRecordPresenter()
+ {
+ g_pTraingRecordPresenter = this;
+ }
+
+ TraingRecordPresenter::~TraingRecordPresenter()
+ {
+ g_pTraingRecordPresenter = nullptr;
+ }
+
+ TraingRecordPresenter *TraingRecordPresenter::GetInstance()
+ {
+ return g_pTraingRecordPresenter;
+ }
+
+ void TraingRecordPresenter::OnStart()
+ {
+ Presenter<TraingRecordView>::OnStart();
+ }
+
+ void TraingRecordPresenter::OnPause(void)
+ {
+ Presenter<TraingRecordView>::OnPause();
+ }
+
+ void TraingRecordPresenter::OnResume(void)
+ {
+ Presenter<TraingRecordView>::OnResume();
+ }
+
+ void TraingRecordPresenter::OnStop(void)
+ {
+ Presenter<TraingRecordView>::OnStop();
+ }
+
+ bool TraingRecordPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+ (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ }
+
+ bool TraingRecordPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ }
+}
--- /dev/null
+
+#include "traingrecord/include/TraingRecordView.h"
+
+#include "common/image_cache_manager.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include <ui_scroll_view.h>
+#include "components/ui_button.h"
+namespace OHOS
+{
+
+ static TraingRecordView *g_pTraingRecordView{nullptr};
+
+ TraingRecordView::TraingRecordView()
+ {
+ g_pTraingRecordView = this;
+ }
+
+ TraingRecordView::~TraingRecordView()
+ {
+ DeInit();
+ g_pTraingRecordView = nullptr;
+ }
+
+ TraingRecordView *TraingRecordView::GetInstance()
+ {
+
+ return g_pTraingRecordView;
+ }
+ /*
+ InitLabel:初始化标签
+ @param label 标签指针
+ @param left 标签左边位置
+ @param top 标签顶部位置
+ @param width 标签宽度
+ @param height 标签高度
+ @param viewId 标签的视图 ID
+ @param text 标签显示的文本
+ @param fontName 字体名称
+ @param fontSize 字体大小
+ */
+ void TraingRecordView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize)
+ {
+ // 检查标签指针是否为空
+ if (label == nullptr)
+ {
+ label = new UILabel();
+ }
+ // 设置标签的位置和大小
+ label->SetPosition(left, top);
+ label->Resize(width, height);
+ // 设置标签的视图 ID
+ label->SetViewId(viewId);
+ // 设置标签的样式
+ label->SetStyle(STYLE_TEXT_FONT, fontSize);
+ label->SetFont(fontName, fontSize);
+ // 设置标签的文本和其他属性
+ label->SetText(text);
+ label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label->SetRollSpeed(0);
+ // 设置标签可见
+ label->SetVisible(true);
+ }
+ /*
+ InitButton:初始化按钮
+ @param button 按钮指针
+ @param left 按钮左边位置
+ @param top 按钮顶部位置
+ @param width 按钮宽度
+ @param height 按钮高度
+ @param viewId 按钮的视图 ID
+ */
+ void TraingRecordView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId)
+ {
+ // 设置按钮的背景颜色
+ uint32_t backgroundColor = 0xff191919; // 默认背景颜色
+ uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色
+ uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色
+ // 创建新按钮(如果当前按钮为空)
+ if (button == nullptr)
+ {
+ button = new UIButton();
+ }
+ button->SetPosition(left, top);
+ button->Resize(width, height);
+ button->SetViewId(viewId);
+ button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor);
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED);
+ button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED);
+ // 设置按钮的点击事件监听器为 TraingRecordPresenter 的实例
+ button->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingRecordPresenter::GetInstance()));
+ // 设置按钮可见
+ button->SetVisible(true);
+ }
+ /*
+ InitImageView:初始化图片
+ @param imageView 图片指针
+ @param left 图片左边位置
+ @param top 图片顶部位置
+ @param width 图片宽度
+ @param height 图片高度
+ @param viewId 图片的视图 ID
+ @param imagePath 图片路径
+ */
+ void TraingRecordView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath)
+ {
+ if (imageView == nullptr)
+ {
+ imageView = new UIImageView();
+ }
+ imageView->SetPosition(left, top);
+ imageView->Resize(width, height);
+ imageView->SetViewId(viewId);
+ imageView->SetSrc(imagePath);
+ imageView->SetVisible(true);
+ }
+ /* InitView:初始化界面*/
+ void TraingRecordView ::InitView()
+ {
+ if (container_ == nullptr)
+ {
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, 466, 466);
+ container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ }
+ // 初始化Lable
+ // Add Label to App
+ if (label1_ == nullptr)
+ {
+ label1_ = new UILabel();
+ }
+ label1_->SetPosition(181, 52); // widget's left position and top position
+ label1_->Resize(200, 60); // widget's width and height
+ label1_->SetViewId("label1"); // Set style
+ label1_->SetStyle(STYLE_TEXT_FONT, 26);
+
+ // Set additional property
+ label1_->SetText("训练记录");
+ label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label1_->SetRollSpeed(0);
+ label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);
+
+ // Add to rootView
+ container_->Add(label1_);
+ label1_->SetVisible(true);
+
+ // Add Label to App
+ if (label2_ == nullptr)
+ {
+ label2_ = new UILabel();
+ }
+ label2_->SetPosition(188, 217); // widget's left position and top position
+ label2_->Resize(200, 60); // widget's width and height
+ label2_->SetViewId("label2"); // Set style
+ label2_->SetStyle(STYLE_TEXT_FONT, 30);
+
+ // Set additional property
+ label2_->SetText("无记录");
+ label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label2_->SetTextColor(Color::GetColorFromRGBA(0x28, 0xbc, 0x0c, 0xff));
+ label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label2_->SetRollSpeed(0);
+ label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ // Add to rootView
+ container_->Add(label2_);
+ label2_->SetVisible(true);
+ }
+
+ /* DeInit:删除组件 */
+ void TraingRecordView::DeInit()
+ {
+ UIView *view = static_cast<UIViewGroup *>(container_)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UIViewGroup *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+ delete container_;
+ container_ = nullptr;
+ }
+
+ void TraingRecordView::PreLoad(void)
+ {
+ if (!viewiInitStatus)
+ {
+ InitView();
+ viewiInitStatus = true;
+ }
+ }
+ void TraingRecordView::OnStart()
+ {
+ container_ = new UIViewGroup();
+ if (container_ == nullptr)
+ {
+ return;
+ }
+ container_->SetPosition(0, 0);
+ container_->SetWidth(Screen::GetInstance().GetWidth());
+ container_->SetHeight(Screen::GetInstance().GetHeight());
+
+ // 创建 draglistener 实例并设置为拖动监听器
+ UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingRecordPresenter::GetInstance());
+ if (draglistener == nullptr)
+ {
+ return;
+ }
+ container_->SetOnDragListener(draglistener);
+
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+
+ PreLoad();
+ RootView::GetInstance()->Add(container_);
+ }
+
+ void TraingRecordView::OnSetUpView()
+ {
+
+ View<TraingRecordPresenter>::OnSetUpView();
+ Draw();
+ }
+
+ void TraingRecordView::OnTearDownView()
+ {
+
+ View<TraingRecordPresenter>::OnTearDownView();
+ return;
+ }
+
+ void TraingRecordView::OnStop()
+ {
+ View<TraingRecordPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+}