2.1 Estrutura Pai-Filho
Um objeto pai serve como contêiner para seus objetos filhos. Com exceção da tela, todo objeto precisa ter exatamente um pai. Um pai pode conter quantos filhos forem necessários, e não há restrição quanto ao tipo do pai.
- Quando o pai se move, seus filhos também se movem junto.
- Se parte de um filho ultrapassar os limites do pai, essa parte não será visível.
Exemplo 1: Movimento sincronizado entre pai e filho
void interface_customizada(void) {
lv_obj_t *container = lv_obj_create(lv_scr_act());
lv_obj_set_size(container, 400, 240);
lv_obj_t *bloco = lv_obj_create(container);
lv_obj_set_pos(bloco, 50, 10);
lv_obj_align(container, LV_ALIGN_CENTER, 0, 0);
}
Exemplo 2: Recorte de área fora do pai
void interface_customizada(void) {
lv_obj_t *container = lv_obj_create(lv_scr_act());
lv_obj_set_size(container, 400, 240);
lv_obj_t *bloco = lv_obj_create(container);
lv_obj_set_size(bloco, 200, 120);
lv_obj_set_pos(bloco, -100, -60);
}
2.2 Criação e Exclusão de Objetos
Todos os objetos são criados com lv_obj_create(), especificando seu objeto pai. A exclusão pode ser feita com lv_obj_del(), ou adiada com lv_obj_del_async() para operações seguras em ambientes multitarefa.
2.3 Unidades de Medida
As dimensões no LVGL são medidas em pixels. Para tamanhos responsivos, pode-se usar LV_DPX() para ajustar valores conforme a densidade da tela.
2.4 Posicionamento
A posição de um objeto é definida em relação ao seu pai através de lv_obj_set_pos(). Para posicionamento relativo a outros elementos, use lv_obj_align() ou lv_obj_align_to().
2.5 Alinhamento
O alinhamento facilita o posicionamento relativo:
lv_obj_align(caixa, LV_ALIGN_CENTER, 0, 0); // Centraliza o objeto
2.6 Dimensões
Define tamanho com:
lv_obj_set_width(caixa, 150);
lv_obj_set_height(caixa, 80);
Ou ambos com:
lv_obj_set_size(caixa, 150, 80);
2.7 Estilos
Estilos customizáveis controlam aparência visual:
lv_style_t estilo;
lv_style_init(&estilo);
lv_style_set_bg_color(&estilo, lv_color_hex(0xFF5733));
lv_style_set_border_width(&estilo, 2);
lv_style_set_border_color(&estilo, lv_color_black());
lv_obj_add_style(caixa, &estilo, 0);
2.8 Eventos
Objetos podem ter callbacks para eventos:
lv_obj_add_event_cb(botao, evento_clicado, LV_EVENT_CLICKED, NULL);
Com implementação do handler:
void evento_clicado(lv_event_t *e) {
LV_LOG_USER("Botão foi clicado");
}