用lvgl写一个简单的登录页面
时间: 2023-09-16 18:07:33 浏览: 684
好的,下面是一个使用 LittlevGL 实现的简单登录页面的示例代码:
```
#include <stdio.h>
#include "lvgl/lvgl.h"
// 定义样式
lv_style_t style_bg, style_btn;
lv_obj_t *label_user, *label_pwd, *btn_login;
lv_obj_t *kb;
char user[20], pwd[20];
// 登录按钮点击事件
void btn_login_event_handler(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_CLICKED) {
printf("Username: %s\nPassword: %s\n", user, pwd);
}
}
// 用户名文本框事件处理函数
void user_event_handler(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
lv_textarea_get_text(obj, user);
}
}
// 密码文本框事件处理函数
void pwd_event_handler(lv_obj_t *obj, lv_event_t event)
{
if (event == LV_EVENT_VALUE_CHANGED) {
lv_textarea_get_text(obj, pwd);
}
}
int main(void)
{
// 初始化 LittlevGL
lv_init();
// 创建一个基础样式
lv_style_init(&style_bg);
lv_style_set_bg_color(&style_bg, LV_STATE_DEFAULT, LV_COLOR_WHITE);
// 创建一个按钮样式
lv_style_init(&style_btn);
lv_style_set_bg_color(&style_btn, LV_STATE_DEFAULT, LV_COLOR_BLUE);
lv_style_set_bg_color(&style_btn, LV_STATE_PRESSED, LV_COLOR_NAVY);
lv_style_set_bg_color(&style_btn, LV_STATE_FOCUSED, LV_COLOR_NAVY);
lv_style_set_bg_color(&style_btn, LV_STATE_DISABLED, LV_COLOR_GRAY);
lv_style_set_text_color(&style_btn, LV_STATE_DEFAULT, LV_COLOR_WHITE);
// 创建一个窗口作为登录页面
lv_obj_t *win = lv_win_create(lv_scr_act(), NULL);
lv_win_set_title(win, "Login");
lv_obj_add_style(win, LV_WIN_PART_BG, &style_bg);
// 创建用户名标签
label_user = lv_label_create(win, NULL);
lv_label_set_text(label_user, "Username:");
lv_obj_align(label_user, NULL, LV_ALIGN_IN_TOP_LEFT, 20, 50);
// 创建用户名文本框
lv_obj_t *ta_user = lv_textarea_create(win, NULL);
lv_obj_add_style(ta_user, LV_OBJ_PART_MAIN, &style_bg);
lv_obj_set_size(ta_user, 200, 30);
lv_obj_align(ta_user, label_user, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
lv_textarea_set_placeholder_text(ta_user, "Input your username...");
lv_textarea_set_max_length(ta_user, 20);
lv_obj_set_event_cb(ta_user, user_event_handler);
// 创建密码标签
label_pwd = lv_label_create(win, NULL);
lv_label_set_text(label_pwd, "Password:");
lv_obj_align(label_pwd, ta_user, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 20);
// 创建密码文本框
lv_obj_t *ta_pwd = lv_textarea_create(win, NULL);
lv_obj_add_style(ta_pwd, LV_OBJ_PART_MAIN, &style_bg);
lv_obj_set_size(ta_pwd, 200, 30);
lv_obj_align(ta_pwd, label_pwd, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 10);
lv_textarea_set_placeholder_text(ta_pwd, "Input your password...");
lv_textarea_set_max_length(ta_pwd, 20);
lv_textarea_set_pwd_mode(ta_pwd, true);
lv_obj_set_event_cb(ta_pwd, pwd_event_handler);
// 创建登录按钮
btn_login = lv_btn_create(win, NULL);
lv_obj_add_style(btn_login, LV_OBJ_PART_MAIN, &style_btn);
lv_obj_set_size(btn_login, 100, 40);
lv_obj_align(btn_login, ta_pwd, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 30);
lv_obj_t *label_login = lv_label_create(btn_login, NULL);
lv_label_set_text(label_login, "Login");
lv_obj_set_event_cb(btn_login, btn_login_event_handler);
// 创建一个键盘
kb = lv_keyboard_create(lv_scr_act(), NULL);
lv_keyboard_set_cursor_manage(kb, true);
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_TEXT_LOWER);
while (1) {
lv_task_handler();
}
return 0;
}
```
该示例代码使用了 LittlevGL 提供的各种控件,包括窗口、标签、文本框、按钮和键盘等。在登录页面中,用户可以输入用户名和密码,然后点击登录按钮进行登录。在点击登录按钮时,会调用 `btn_login_event_handler()` 函数,其中可以获取输入的用户名和密码,并进行相关的处理。
阅读全文