imgbtn的相关API - lightdong/LVGL_Study GitHub Wiki
IMGBTN_TEST/图片按钮的测试/ /part : main/
/*创建一个图片按钮,并设置按下与松开的两种状态*/
lv_obj_t *imgbtn1= lv_imgbtn_create(lv_scr_act());
/*设置高度、宽度时与图片的大小一样就可以,在下面设置时传递给中间就可以*/
lv_obj_set_size(imgbtn1,AC_off.header.w,AC_off.header.h);
/如果要使用回调函数的话要添加下面的两种状态/
lv_imgbtn_set_src(imgbtn1,LV_IMGBTN_STATE_RELEASED,NULL,&conditioner_off,NULL);
lv_imgbtn_set_src(imgbtn1,LV_IMGBTN_STATE_PRESSED,NULL,&conditioner_on,NULL);
/按一下就锁定为某一个状态,需要使用其他的函数,但是需要开启一种状态/
// lv_obj_add_flag(imgbtn1,LV_OBJ_FLAG_CHECKABLE);
// lv_imgbtn_set_src(imgbtn1,LV_IMGBTN_STATE_CHECKED_RELEASED,NULL,&airc_off,NULL);
// lv_imgbtn_set_src(imgbtn1,LV_IMGBTN_STATE_CHECKED_PRESSED,NULL,&airc_on,NULL);
/解决初始没有显示的问题/
lv_imgbtn_set_state(imgbtn1,LV_IMGBTN_STATE_CHECKED_RELEASED);
/通过回调函数来切换颜色/
lv_obj_add_event_cb(imgbtn1,imgbtn1_cb,LV_EVENT_CLICKED,NULL);
/图片按钮的回调函数/
static void imgbtn1_cb(lv_event_t *e){
/*加上static就会放到堆里且这个变量只能被这个函数所调用,所以这样就可以避免只能触发一次颜色改变的情况*/
static char flag = 1;
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *target = lv_event_get_target(e);
// if(lv_obj_has_state(target,LV_STATE_CHECKED)){
if(code == LV_EVENT_CLICKED){
if(flag == 1){
lv_obj_set_style_img_recolor(target,lv_color_hex(0x0000ff),LV_STATE_DEFAULT | LV_PART_MAIN);
lv_obj_set_style_img_recolor_opa(target,255,LV_STATE_DEFAULT | LV_PART_MAIN);
flag = 0;
}else if(flag == 0){
lv_obj_set_style_img_recolor_opa(target,0,LV_STATE_DEFAULT | LV_PART_MAIN);
flag = 1;
}
}
}