部件
小部件由一个或多个部件构成。例如,一个按钮只有一个部件,称为 LV_PART_MAIN。然而,一个 Slider (滑动条)(lv_slider) 有 LV_PART_MAIN、LV_PART_INDICATOR和 LV_PART_KNOB。
状态
小部件可以处于以下状态的组合中:
LV_STATE_DEFAULT正常,释放状态LV_STATE_CHECKED: 切换或选中状态LV_STATE_FOCUSED: 通过键盘或编码器聚焦或通过触摸板/鼠标点击LV_STATE_FOCUS_KEY: 通过键盘或编码器聚焦,但不通过触摸板/鼠标LV_STATE_EDITED: 通过编码器编辑LV_STATE_HOVERED: 被鼠标悬停LV_STATE_PRESSED: 正在被按下LV_STATE_SCROLLED: 正在滚动LV_STATE_DISABLED: 禁用
查看小部件状态
如果处于某种状态,会返回true
lv_obj_has_state(widget, LV_STATE_...)
添加或移除状态
lv_obj_add_state(widget, LV_STATE_...);
lv_obj_remove_state(widget, LV_STATE_...);
使用定时器3s后重置按钮状态
static void time_cb(lv_timer_t * timer)
{
lv_obj_t * w = (lv_obj_t *)timer->user_data;
lv_obj_clear_state(w, LV_STATE_PRESSED);
}
void lv_demo_widget_part_states(void)
{
lv_obj_t * base_widget = lv_scr_act();
lv_obj_t * btn = lv_btn_create(base_widget);
lv_obj_set_size(btn, 100, 50);
lv_obj_center(btn);
// lv_obj_set_align(btn, LV_ALIGN_CENTER);
lv_obj_add_state(btn, LV_STATE_PRESSED);//按钮按下状态
lv_timer_create(time_cb, 3000, btn);
}