Edith
1
{
tile1 = lv_obj_create(my_scr_main);
lv_obj_set_pos(tile1,0,100);
lv_obj_set_size(tile1,320,220);
lv_obj_set_style_bg_color(tile1,lv_color_hex(0x000000), LV_PART_MAIN);
lv_obj_set_style_pad_all(tile1,0,LV_STATE_DEFAULT);
lv_obj_remove_style(tile1, NULL, LV_PART_SCROLLBAR);//移除滚动条
lv_obj_set_flex_flow(tile1, LV_FLEX_FLOW_ROW);//右边开始一直排列下去
lv_obj_set_flex_align(tile1, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_CENTER);
lv_obj_set_style_border_width(tile1,0,LV_STATE_DEFAULT);
lv_obj_clear_flag(my_scr_main, LV_OBJ_FLAG_GESTURE_BUBBLE);
lv_obj_clear_flag(tile1, LV_OBJ_FLAG_GESTURE_BUBBLE);
lv_obj_set_style_pad_column(tile1, 40, LV_PART_MAIN); //图标之间的间隙
lv_obj_set_scroll_dir(tile1, LV_DIR_NONE); //设置浮动拖动方向为横向拖动
lv_obj_t * sw = lv_switch_create(my_scr_main);
lv_obj_center(sw);
lv_obj_add_state(sw, LV_STATE_CHECKED);
lv_obj_add_event_cb(sw, button_left_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
for ( int i = 0; i < 10; i++)
{
lv_obj_t * btn = NULL;
btn = lv_btn_create(tile1);
lv_obj_set_size(btn, 130, 170);
lv_obj_set_style_bg_opa(btn,255, LV_OPA_TRANSP);
lv_obj_set_style_border_width(btn,0,LV_STATE_DEFAULT);
lv_obj_set_style_shadow_opa(btn,0,LV_STATE_DEFAULT);
}
}
ui设计代码
void button_left_event_cb(lv_event_t * e)
{
int child_count = lv_obj_get_child_cnt(tile1); // 获取tile1容器中控件的数量
for (int i = 0; i < child_count; i++) {
lv_obj_t * child = lv_obj_get_child(tile1, i); // 获取tile1容器中的每个子对象
// lv_obj_scroll_to_view(child, LV_ANIM_ON);
// printf("i = %d\n",i);
// 只对按钮控件进行动画
if (lv_obj_get_class(child) == &lv_btn_class)
{
lv_anim_t a;
lv_anim_init(&a);
lv_anim_set_var(&a, child); // 设置动画目标为按钮
lv_anim_set_values(&a, lv_obj_get_x(child), -130);
lv_anim_set_time(&a, 500); // 设置动画持续时间
lv_anim_set_exec_cb(&a, anim_x_cb); // 设置动画执行回调函数
lv_anim_set_path_cb(&a, lv_anim_path_linear); // 设置动画路径为线性效果
lv_anim_start(&a); // 启动动画
}
}
动画设计代码