基础对象lv_obj

  • 基础对象的通用属性,所有的控件都可以设置该属性

    1. // 设置位置

    lv_obj_set_pos(label, 50, 50);

    // 设置大小
    

    lv_obj_set_size(label, 100, 100);

    // 设置可以点击
    

    lv_obj_set_click(label, true);

    // 设置可以拖拽
    

    lv_obj_set_drag(label, true);

  • 给控件添加事件

    lv_obj_set_event_cb(btn1, btn_event_handler);

    static void btn_event_handler(lv_obj_t* obj, lv_event_t event) {

    if (obj == btn1) {
        if (event == LV_EVENT_CLICKED) {
            printf("Btn1 Clicked\n");
            lv_label_set_text(btn_label, "Btn1 Clicked");
        }
    }
    

    }

lv_obj_set_user_data

设置值
int32_t tmp = en; lv_obj_set_user_data(btn, (void )tmp); item_obj->user_data = (void )i;

// 取值 int32_t en = (int32_t )lv_obj_get_user_data(obj);

lv_obj_get_width

lv_obj_get_height

  • 获取指定UI宽高

    lv_obj_get_width(scr); lv_obj_get_height(scr);

lv_obj_set_ext_click_area

  • 增加点击区域

    lv_obj_set_ext_click_area(btn, 10, 10, 10, 10);

lv_page_glue_obj

  • 粘合到page上,使一道滚动
    • void lv_page_glue_obj(lv_obj_t *obj, bool glue)

    Parameters

    • obj: pointer to an object on a page
  • glue: true: enable glue, false: disable glue

lv_obj_align

  • 设置对齐方式

    lv_disp_get_scr_act

  • 获取当前活动的Screen

      // 获取当前默认的Screen
      lv_obj_t *scr = lv_disp_get_scr_act(NULL);
      // 根UI
      lv_obj_t *main_obj = lv_obj_create(scr, NULL);
      // 设置宽高
      lv_obj_set_size(main_obj, lv_obj_get_width(scr), lv_obj_get_height(scr));
      // 在Screen中的对齐方式
      lv_obj_align(main_obj, scr, LV_ALIGN_IN_TOP_LEFT, 0, 0);
    
  • 对齐方式

    enum {
      LV_ALIGN_CENTER = 0,
      LV_ALIGN_IN_TOP_LEFT,
      LV_ALIGN_IN_TOP_MID,
      LV_ALIGN_IN_TOP_RIGHT,
      LV_ALIGN_IN_BOTTOM_LEFT,
      LV_ALIGN_IN_BOTTOM_MID,
      LV_ALIGN_IN_BOTTOM_RIGHT,
      LV_ALIGN_IN_LEFT_MID,
      LV_ALIGN_IN_RIGHT_MID,
      LV_ALIGN_OUT_TOP_LEFT,
      LV_ALIGN_OUT_TOP_MID,
      LV_ALIGN_OUT_TOP_RIGHT,
      LV_ALIGN_OUT_BOTTOM_LEFT,
      LV_ALIGN_OUT_BOTTOM_MID,
      LV_ALIGN_OUT_BOTTOM_RIGHT,
      LV_ALIGN_OUT_LEFT_TOP,
      LV_ALIGN_OUT_LEFT_MID,
      LV_ALIGN_OUT_LEFT_BOTTOM,
      LV_ALIGN_OUT_RIGHT_TOP,
      LV_ALIGN_OUT_RIGHT_MID,
      LV_ALIGN_OUT_RIGHT_BOTTOM,
    };
    typedef uint8_t lv_align_t;
    

    lv_obj_get_coords

  • 获取lv_obj在屏幕中的坐标,左上角 0 0 右下角w h

  • 屏幕上方y为负值
  • 屏幕下方y为正值
  • 同一个lv_obj随着滑动,lv_area_t坐标动态变化 ```

              lv_obj_t *scrt_obj = lv_page_get_scrl(state->base_objs.page_obj);
              lv_area_t scrt_area;
              lv_obj_get_coords(scrt_obj, &scrt_area);
    

typedef struct { lv_coord_t x1; lv_coord_t y1; lv_coord_t x2; lv_coord_t y2; } lv_area_t; ```

屏幕对象Screen

  • 屏幕对象Screen
  • 屏幕对象事一个特殊的对象,他没有父对象
  • 创建screen对象

    lv_obj_t * screen1 = lv_obj_create(NULL,NULL);

  • littlevgl默认会为显示器创建一个lv_obj基础对象作为屏幕,获取方法如下

    lv_src_act();