void SetHeartRateOrBloodOxygenQuickAccessSwitch(void);
int GetHeartRateOrBloodOxygenQuickAccessSwitch(void);
void SetDialId(uint8_t id);
- int GetDialId();
+ int GetDialId();
/* -------------------------------------------------------------------------- */
private:
ConfigModel(); // 私有构造函数,确保无法在外部实例化
int16_t h;
int numFrames;
- int time;
+ int time; // 更新的时间间隔
} imageAnimatorConfig;
// 构造函数
ImageAnimator();
void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, ImageAnimatorInfo *&imageAnimatorInfo, const char **imagePaths, const ImageAnimatorConfig &imageAnimatorConfig);
void FreeImagePathsArray(const char **imagePaths, const int numImages);
-
};
}
#endif
\ No newline at end of file
#include "config/include/ConfigModel.h"\r
namespace OHOS\r
{\r
-\r
class WeatherReportView : public AppGroupView\r
{\r
\r
UIImageAnimatorView *UVImageAnimatorView{nullptr}; // 紫外线动画\r
UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画\r
UIImageAnimatorView *HumidityImageAnimatorView{nullptr}; // 湿度动画\r
- UIImageAnimatorView *AnimatorView{nullptr};\r
ImageAnimator *p_ImageAnimator{nullptr};\r
ImageAnimatorInfo *UVimageAnimatorInfo{nullptr};\r
ImageAnimatorInfo *WindSpeedimageAnimatorInfo{nullptr};\r
ImageAnimatorInfo *HumidityimageAnimatorInfo{nullptr};\r
- const char **UVPaths{nullptr};\r
- const char **WindSpeedPaths{nullptr};\r
- const char **HumidityPaths{nullptr};\r
- std::string imagePaths = "/user/res/weather/weather60x60gif";\r
+ const char **UVPathsArray{nullptr};\r
+ const char **WindSpeedPathsArray{nullptr};\r
+ const char **HumidityPathsArray{nullptr};\r
bool viewInitStatus{false};\r
};\r
} // namespace OHOS\r
#include "wearable_log.h"
#include "AppGroupView.h"
#include <iostream>
+#include "config/include/ConfigModel.h"
namespace OHOS
{
-#define weather_src "/user/res/weather/"
- static const char *background = weather_src "WEATHER_BACKGROUND.bin";
- static const char *weather130x130[] =
+ static constexpr char *WeatherBackground = "WEATHER_BACKGROUND.bin"; // 天气背景
+ static constexpr char *weather130x130[] =
{
- weather_src "WEATHER_CLEAR-CLOUDY.bin",
- weather_src "WEATHER_CLEAR-SUNNY.bin",
- weather_src "WEATHER_DUSTSTORM.bin",
- weather_src "WEATHER_FOGGY.bin",
- weather_src "WEATHER_HAZE.bin",
- weather_src "WEATHER_OVERCAST.bin",
- weather_src "WEATHER_RAIN.bin",
- weather_src "WEATHER_SNOW.bin",
- weather_src "WEATHER_SUNNY.bin",
- weather_src "WEATHER_SUNNY-CLOUNDY.bin",
- weather_src "WEATHER_THUNDERSHOWER.bin",
- weather_src "WEATHER_UNKNOWN.bin"};
+ "/user/res/weather/weather130x130/WEATHER_CLEAR-CLOUDY.bin",
+ "/user/res/weather/weather130x130/WEATHER_CLEAR-SUNNY.bin",
+ "/user/res/weather/weather130x130/WEATHER_DUSTSTORM.bin",
+ "/user/res/weather/weather130x130/WEATHER_FOGGY.bin",
+ "/user/res/weather/weather130x130/WEATHER_HAZE.bin",
+ "/user/res/weather/weather130x130/WEATHER_OVERCAST.bin",
+ "/user/res/weather/weather130x130/WEATHER_RAIN.bin",
+ "/user/res/weather/weather130x130/WEATHER_SNOW.bin",
+ "/user/res/weather/weather130x130/WEATHER_SUNNY.bin",
+ "/user/res/weather/weather130x130/WEATHER_SUNNY-CLOUNDY.bin",
+ "/user/res/weather/weather130x130/WEATHER_THUNDERSHOWER.bin",
+ "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin"};
}
namespace OHOS
std::string WeatherArea; // 天气地区
std::string MaxandMinTemperature; // 最高与最低气温
private:
- UIImageView *showWeatherImage = nullptr; // 显示天气图片
- UILabel *showCurrentTimeLabel{nullptr}; // 显示当前时间
- UILabel *showTemperatureLabel{nullptr}; // 显示天气温度
- UILabel *showWeatherDescriptionLabel{nullptr}; // 显示天气描述
- UILabel *showWeatherAreaLabel{nullptr}; // 显示天气地区
- UILabel *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
+ UIImageView *showWeatherImage = nullptr; // 显示天气图片
+ UILabel *showCurrentTimeLabel{nullptr}; // 显示当前时间
+ UILabel *showTemperatureLabel{nullptr}; // 显示天气温度
+ UILabel *showWeatherDescriptionLabel{nullptr}; // 显示天气描述
+ UILabel *showWeatherAreaLabel{nullptr}; // 显示天气地区
+ UILabel *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
+ UIImageAnimatorView *PullUpAnimatorView{nullptr}; // 上拉动画
+ ImageAnimator *p_ImageAnimator{nullptr};
+ ImageAnimatorInfo *PullUpimageAnimatorInfo{nullptr};
+ const char **PullUpPathsArray{nullptr};
bool viewInitStatus{false};
};
} // namespace OHOS
\r
namespace OHOS\r
{\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_X = 53;\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_Y = 160;\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_W = 60;\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_H = 60;\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
+ static constexpr int16_t UV_IMAGE_ANIMATOR_TIME = 100; // 图片更新间隔\r
+\r
+ static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_X = 203;\r
+ static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
+\r
+ static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_X = 353;\r
+ static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 20; // 图片帧数\r
+\r
+ static constexpr char *UVPaths = "/user/res/weather/weather60x60gif/UV/";\r
+ static constexpr char *WindSpeedPaths = "/user/res/weather/weather60x60gif/WindSpeed/";\r
+ static constexpr char *HumidityPaths ="/user/res/weather/weather60x60gif/Humidity/";\r
+\r
static WeatherReportView *g_pWeatherReportView{nullptr};\r
\r
WeatherReportView::WeatherReportView()\r
return g_pWeatherReportView;\r
}\r
\r
- /**\r
- * 释放图片文件路径数组占用的内存\r
- * @param imagePaths 图片文件路径数组\r
- * @param numImages 图片文件的数量\r
- */\r
- static void FreeImagePathsArray(const char **imagePaths, int numImages)\r
- {\r
- for (int i = 0; i < numImages; i++)\r
- {\r
- free((void *)imagePaths[i]);\r
- }\r
- delete[] imagePaths;\r
- }\r
-\r
void WeatherReportView::ClearAll(void)\r
{\r
if (viewInitStatus == true)\r
\r
if (p_ImageAnimator != nullptr)\r
{\r
- p_ImageAnimator->FreeImagePathsArray(UVPaths, 24);\r
- p_ImageAnimator->FreeImagePathsArray(WindSpeedPaths, 24);\r
- p_ImageAnimator->FreeImagePathsArray(HumidityPaths, 20);\r
+ p_ImageAnimator->FreeImagePathsArray(UVPathsArray, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ p_ImageAnimator->FreeImagePathsArray(WindSpeedPathsArray, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ p_ImageAnimator->FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
\r
delete p_ImageAnimator;\r
p_ImageAnimator = nullptr;\r
}\r
\r
p_ImageAnimator->imageAnimatorConfig = {\r
- .x = 53,\r
- .y = 160,\r
- .w = 60,\r
- .h = 60,\r
- .numFrames = 24,\r
- .time = 100,\r
+ .x = UV_IMAGE_ANIMATOR_VIEW_X,\r
+ .y = UV_IMAGE_ANIMATOR_VIEW_Y,\r
+ .w = UV_IMAGE_ANIMATOR_VIEW_W,\r
+ .h = UV_IMAGE_ANIMATOR_VIEW_H,\r
+ .numFrames = UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES,\r
+ .time = UV_IMAGE_ANIMATOR_TIME,\r
};\r
- UVPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/UV/", "bin", 24);\r
- p_ImageAnimator->InitImageAnimatorSource(UVImageAnimatorView, UVimageAnimatorInfo, UVPaths, p_ImageAnimator->imageAnimatorConfig);\r
+ UVPathsArray = p_ImageAnimator->CreateImagePathsArray(UVPaths, "bin", UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ p_ImageAnimator->InitImageAnimatorSource(UVImageAnimatorView, UVimageAnimatorInfo, UVPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
\r
- p_ImageAnimator->imageAnimatorConfig.x = 203;\r
- WindSpeedPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/WindSpeed/", "bin", 24);\r
- p_ImageAnimator->InitImageAnimatorSource(WindSpeedImageAnimatorView, WindSpeedimageAnimatorInfo, WindSpeedPaths, p_ImageAnimator->imageAnimatorConfig);\r
+ p_ImageAnimator->imageAnimatorConfig.x = WINDSPEED_IMAGE_ANIMATOR_VIEW_X;\r
+ WindSpeedPathsArray = p_ImageAnimator->CreateImagePathsArray(WindSpeedPaths, "bin", WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ p_ImageAnimator->InitImageAnimatorSource(WindSpeedImageAnimatorView, WindSpeedimageAnimatorInfo, WindSpeedPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
\r
- p_ImageAnimator->imageAnimatorConfig.x = 353;\r
- p_ImageAnimator->imageAnimatorConfig.numFrames = 20;\r
- HumidityPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/Humidity/", "bin", 20);\r
- p_ImageAnimator->InitImageAnimatorSource(HumidityImageAnimatorView, HumidityimageAnimatorInfo, HumidityPaths, p_ImageAnimator->imageAnimatorConfig);\r
+ p_ImageAnimator->imageAnimatorConfig.x = HUMIDITY_IMAGE_ANIMATOR_VIEW_X;\r
+ p_ImageAnimator->imageAnimatorConfig.numFrames = HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES;\r
+ HumidityPathsArray = p_ImageAnimator->CreateImagePathsArray(HumidityPaths, "bin", HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ p_ImageAnimator->InitImageAnimatorSource(HumidityImageAnimatorView, HumidityimageAnimatorInfo, HumidityPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
\r
/* ---------------------------------- Start --------------------------------- */\r
UVImageAnimatorView->Start();\r
Add(UVImageAnimatorView);\r
Add(WindSpeedImageAnimatorView);\r
Add(HumidityImageAnimatorView);\r
-\r
return true;\r
}\r
\r
#include "weather/include/WeatherView.h"
-#include "UiConfig.h"
-
+#include "config/include/ConfigModel.h"
/*
当至天气界面时,主动获取最新天气数据。
(此操作静默将进行,获取到则立刻更新显示,获取不到则重试
namespace OHOS
{
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_X = 213;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_Y = 400;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_W = 40;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_H = 40;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 74;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 50;
+ static constexpr char *PullUpPaths = "/user/res/weather/PullUp/PullUp_";
+
static WeatherView *g_pWeatherView{nullptr};
WeatherView::WeatherView()
{
delete showMaxandMinTemperatureLabel;
showMaxandMinTemperatureLabel = nullptr;
}
+ if (PullUpAnimatorView != nullptr)
+ {
+ PullUpAnimatorView->Stop();
+ delete PullUpAnimatorView;
+ PullUpAnimatorView = nullptr;
+ }
+ if (p_ImageAnimator != nullptr)
+ {
+ p_ImageAnimator->FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
+ delete p_ImageAnimator;
+ p_ImageAnimator = nullptr;
+ }
+ delete PullUpimageAnimatorInfo;
}
}
std::string WeatherView::GetWeatherArea()
{
srand(time(0));
- std::string area[] = {"北京市东城区", "深圳市ä¿\9då®\89å\8cº"};
+ std::string area[] = {"北京市东城区", "深圳市å®\9då®\89å\8cº"};
int num = rand() % (sizeof(area) / sizeof(area[0]));
return area[1];
}
}
showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
+ p_ImageAnimator = new ImageAnimator();
+ if (p_ImageAnimator == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!");
+ return false;
+ }
+
+ p_ImageAnimator->imageAnimatorConfig.x = PULLUP_ANIMATOR_VIEW_X;
+ p_ImageAnimator->imageAnimatorConfig.y = PULLUP_ANIMATOR_VIEW_Y;
+ p_ImageAnimator->imageAnimatorConfig.w = PULLUP_ANIMATOR_VIEW_W;
+ p_ImageAnimator->imageAnimatorConfig.h = PULLUP_ANIMATOR_VIEW_H;
+ p_ImageAnimator->imageAnimatorConfig.numFrames = PULLUP_ANIMATOR_VIEW_NUM_FRAMES;
+ p_ImageAnimator->imageAnimatorConfig.time = PULLUP_ANIMATOR_VIEW_TIME;
+ PullUpPathsArray = p_ImageAnimator->CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
+ p_ImageAnimator->InitImageAnimatorSource(PullUpAnimatorView, PullUpimageAnimatorInfo, PullUpPathsArray, p_ImageAnimator->imageAnimatorConfig);
+ PullUpAnimatorView->Start();
+
/* -------------------------------- 将组件添加到根视图 ------------------------------- */
Add(showWeatherImage);
Add(showCurrentTimeLabel);
Add(showWeatherDescriptionLabel);
Add(showWeatherAreaLabel);
Add(showMaxandMinTemperatureLabel);
+ Add(PullUpAnimatorView);
viewInitStatus = true;
return true;
}