源代码:
// Arc事件回调函数
static void arc_event_handler(lv_obj_t *obj, lv_event_t event)
{
int angle = 0; // 改变的角度值
if (event == LV_EVENT_CLICKED)
{ // 控件上单击事件
LV_LOG_INFO("arc_event_handler->Arc Clicked\n");
}
else if (event == LV_EVENT_VALUE_CHANGED)
{ // 角度改变事件,手触摸/拖动进度条
//angle = lv_arc_get_value(obj); // 获取事件对象改变的角度
angle = lv_arc_get_angle_start(obj);
static char buf[8];
snprintf(buf, sizeof(buf), "Arc %d", angle); // 将值变为字符串
lv_obj_t *label = lv_obj_get_child(obj, NULL); // 获取事件对象的标签子对象
lv_label_set_text(label, buf); // 设置标签文本
lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); // 标签文件有改变要重新设置对齐
LV_LOG_INFO("arc_event_handler->Value_Changed:%d\n", angle);
}
else if (event == LV_EVENT_PRESSED)
{
static int16_t a = 0;
angle = lv_arc_get_angle_end(obj);
if (angle >= 360)
angle = 0;
else
angle += 30;
lv_arc_set_angles(obj, 0, angle);
}
}
//描述:bar事件回调函数
static void bar_event_handler(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_PRESSED)
{
static int16_t value = 0;
value = lv_bar_get_value(obj);
if (value > 100)
value = 0;
else
value += 10;
//静态显示设置值
lv_bar_set_value(obj, value, LV_ANIM_OFF);
}
}
//描述:矩阵按钮事件
static void btm_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED)
{
const char * txt = lv_btnm_get_active_btn_text(obj);
printf("%s was pressed\n", txt);
}
}
static void button_event_handle(lv_obj_t* obj, lv_event_t event)
{
static int count = 0;
if (event == LV_EVENT_CLICKED)
{
printf(__FUNCTION__": clicked count=%d.\n", count++);
}
}
static void calendar_event_handle(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) //日历数值改变
{
lv_calendar_date_t * date = lv_calendar_get_pressed_date(obj);
if (date)
printf(__FUNCTION__": choice date %d/%d/%d\n", date->year, date->month, date->day);
}
else if (event == LV_EVENT_CLICKED) //点击事件
{
printf(__FUNCTION__": clicked event.\n");
}
//高亮当前选中的日期
lv_calendar_date_t * date = lv_calendar_get_pressed_date(obj);
lv_calendar_set_highlighted_dates(obj, date, 3);
}
//描述:复选框事件回调函数
static void cb_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED)
{
printf("State: %s\n", lv_cb_is_checked(obj) ? "Checked" : "Unchecked");
}
}
typedef struct {
lv_obj_t * chart;
lv_chart_series_t * ser1;
lv_chart_series_t * ser2;
}TChartObject;
static TChartObject chartObject;
__declspec (thread) int nCount = 0; //线程局部变量
DWORD WINAPI chart_thread_proc(LPVOID * wparm)
{
TChartObject *pTChartObject = (TChartObject*)wparm;
int iOffset = 0;
while (1)
{
Sleep(500);
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
lv_chart_set_next(pTChartObject->chart, pTChartObject->ser1, 0 + iOffset);
else
lv_chart_set_next(pTChartObject->chart, pTChartObject->ser1, 20 + iOffset);
}
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
lv_chart_set_next(pTChartObject->chart, pTChartObject->ser2, 0 + iOffset);
else
lv_chart_set_next(pTChartObject->chart, pTChartObject->ser2, 40 + iOffset);
}
iOffset++;
if (iOffset > 10)
iOffset = 0;
lv_chart_refresh(pTChartObject->chart);
}
return 0;
}
static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
char buf[32];
lv_ddlist_get_selected_str(obj, buf, sizeof(buf));
printf("Option: %s\n", buf);
}
}
static lv_obj_t * imgbtn1;
static lv_obj_t * imgbtn_label;
static void imgbtn_event_handler(lv_obj_t * obj, lv_event_t event)
{
static int i = 0;;
static char buffer[32];
if (obj == imgbtn1) {
if (event == LV_EVENT_CLICKED) {
i++;
sprintf(buffer, "imgBtn Clicked %d", i);
lv_label_set_text(imgbtn_label, buffer);
}
}
}
static void list_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_CLICKED) {
printf("Clicked: %s\n", lv_list_get_btn_text(obj));
}
}
static lv_obj_t * mbox1;
static void mbox_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
printf("Button: %s\n", lv_mbox_get_active_btn_text(obj));
lv_mbox_start_auto_close(mbox1, 10);
}
}
static void roller_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
char buf[32];
lv_roller_get_selected_str(obj, buf, sizeof(buf));
printf("Selected month: %s\n", buf);
}
}
static void spinbox_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
printf("Value: %d\n", lv_spinbox_get_value(obj));
}
else if (event == LV_EVENT_CLICKED) {
/*For simple test: Click the spinbox to increment its value*/
lv_spinbox_increment(obj);
}
}
static lv_obj_t * slider_label;
static void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
static char buf[4]; /* max 3 bytes for number plus 1 null terminating byte */
snprintf(buf, 4, "%u", lv_slider_get_value(slider));
lv_label_set_text(slider_label, buf);
}
}
static void sw_event_handler(lv_obj_t * obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
printf("State: %s\n", lv_sw_get_state(obj) ? "On" : "Off");
}
}
LV_IMG_DECLARE(WaveShare_LOGO)
LV_IMG_DECLARE(image_dog);
#define CANVAS_WIDTH 210
#define CANVAS_HEIGHT 160
static void my_learn_lvgl()
{
//0. 选项卡控件
lv_obj_t *tabview;
tabview = lv_tabview_create(lv_scr_act(), NULL);
/*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/
lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1");
lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2");
lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3");
lv_obj_t *tab4 = lv_tabview_add_tab(tabview, "Tab 4");
/*Add content to the tabs*/
lv_obj_t * label_tab = lv_label_create(tab1, NULL);
lv_label_set_text(label_tab, "This the first tab\n\n"
"If the content\n"
"of a tab\n"
"become too long\n"
"the it \n"
"automatically\n"
"become\n"
"

最低0.47元/天 解锁文章
778

被折叠的 条评论
为什么被折叠?



