按键按下加一

程序

#include <lvgl.h>
#include <TFT_eSPI.h>/*If you want to use the LVGL examples,make sure to install the lv_examples Arduino libraryand uncomment the following line.
#include <lv_examples.h>
*/// #include <lv_demo.h>#define LV_USE_LOG 1TFT_eSPI tft = TFT_eSPI(); /* TFT instance *//*Change to your screen resolution*/
static const uint32_t screenWidth  = 320;
static const uint32_t screenHeight = 240;static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * 10 ];#if LV_USE_LOG != 0
/* Serial debugging */
void my_print( lv_log_level_t level, const char * file, uint32_t line, const char * fn_name, const char * dsc )
{Serial.printf( "%s(%s)@%d->%s\r\n", file, fn_name, line, dsc );Serial.flush();
}
#endif/* Display flushing */
void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
{uint32_t w = ( area->x2 - area->x1 + 1 );uint32_t h = ( area->y2 - area->y1 + 1 );tft.startWrite();tft.setAddrWindow( area->x1, area->y1, w, h );tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );tft.endWrite();lv_disp_flush_ready( disp );
}/*Read the touchpad*/
void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
{uint16_t touchX, touchY;bool touched = tft.getTouch( &touchX, &touchY, 600 );if( !touched ){data->state = LV_INDEV_STATE_REL;}else{data->state = LV_INDEV_STATE_PR;/*Set the coordinates*/data->point.x = touchX;data->point.y = touchY;Serial.print( "Data x " );Serial.println( touchX );Serial.print( "Data y " );Serial.println( touchY );}
}static void btn_event_callback(lv_event_t* event)
{static uint32_t counter = 1;lv_obj_t* btn = lv_event_get_target(event); //获取事件对象if (btn != NULL){lv_obj_t* label = lv_obj_get_child(btn, 0); // 获取第一个子对象if (label != NULL){lv_label_set_text_fmt(label, "%d", counter); //设置显示内容counter++;}}
}void lv_button_click_event_test()
{lv_obj_t* btn = lv_btn_create(lv_scr_act()); // 创建Button对象if (btn != NULL){lv_obj_set_size(btn, 100, 50); // 设置对象大小,宽度和高度lv_obj_set_pos(btn, 110, 100);; // 设置按钮位置,即X和Y坐标lv_obj_add_event_cb(btn, btn_event_callback, LV_EVENT_CLICKED, NULL); // 给对象添加CLICK事件和事件处理回调函数lv_obj_t* label = lv_label_create(btn); // 基于Button对象创建Label对象if (label != NULL){lv_label_set_text(label, "Click me!"); // 设置显示内容lv_obj_center(label); // 对象居中显示}}
}
/*
static void slider_event_callback(lv_event_t* event)
{lv_obj_t * slider = lv_event_get_target(event);if (slider != NULL){lv_obj_t* label = (lv_obj_t* )lv_event_get_user_data(event);if (label != NULL){// 刷新label对象的文本lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 设置对齐,label对象在slider对象上方中间位置}}
}void lv_slider_test()
{lv_obj_t * slider = lv_slider_create(lv_scr_act()); // 创建滑块对象if (slider != NULL){lv_obj_set_width(slider, 200); // 设置slider的宽度lv_obj_center(slider);  // 对样显示在屏幕中央lv_slider_set_range(slider, 10, 200); // 设置滑块值的变化范围10-200lv_obj_t* label = lv_label_create(lv_scr_act()); // 创建一个标签,用于显示滑块的滑动值if (label != NULL){lv_label_set_text_fmt(label, "%d", lv_slider_get_min_value(slider)); // 标签默认显示滑块的最小值lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 标签对象放在slider对象的上方中间位置// 添加滑块值变化事件和事件回调函数,并将label对象最为事件的user_datalv_obj_add_event_cb(slider, slider_event_callback, LV_EVENT_VALUE_CHANGED, (void *)label);}}
}
*/
void setup()
{Serial.begin( 115200 ); /* prepare for possible serial debug */Serial.println( "Hello Arduino! (V8.0.X)" );Serial.println( "I am LVGL_Arduino" );lv_init();#if LV_USE_LOG != 0// lv_log_register_print_cb( my_print ); /* register print function for debugging */
#endiftft.begin();          /* TFT init */tft.setRotation( 1 ); /* Landscape orientation, flipped *//*Set the touchscreen calibration data,the actual data for your display can be aquired usingthe Generic -> Touch_calibrate example from the TFT_eSPI library*/uint16_t calData[5] = { 442, 3414, 336, 3425, 3 };tft.setTouch(calData);lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * 10 );/*Initialize the display*/static lv_disp_drv_t disp_drv;lv_disp_drv_init( &disp_drv );/*Change the following line to your display resolution*/disp_drv.hor_res = screenWidth;disp_drv.ver_res = screenHeight;disp_drv.flush_cb = my_disp_flush;disp_drv.draw_buf = &draw_buf;lv_disp_drv_register( &disp_drv );/*Initialize the (dummy) input device driver*/static lv_indev_drv_t indev_drv;lv_indev_drv_init( &indev_drv );indev_drv.type = LV_INDEV_TYPE_POINTER;indev_drv.read_cb = my_touchpad_read;lv_indev_drv_register( &indev_drv );#if 0/* Create simple label */lv_obj_t *label = lv_label_create( lv_scr_act() );lv_label_set_text( label, "Hello Arduino! (V8.0.X)" );lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 );
#elselv_button_click_event_test();
//   lv_slider_test();/* Try an example from the lv_examples Arduino librarymake sure to include it as written above.lv_example_btn_1();*/// uncomment one of these demos// lv_demo_widgets();            // OK// lv_demo_benchmark();          // OK// lv_demo_keypad_encoder();     // works, but I haven't an encoder// lv_demo_music();              // NOK// lv_demo_printer();// lv_demo_stress();             // seems to be OK
#endifSerial.println( "Setup done" );
}void loop()
{lv_timer_handler(); /* let the GUI do its work */lv_tick_inc(5);delay(5);
}

其中主要的设置有以下几个

分别是设置大小,设置按键的位置

lv_obj_set_size(btn, 100, 50); // 设置对象大小,宽度和高度
lv_obj_set_pos(btn, 110, 100);; // 设置按钮位置,即X和Y坐标

效果

按下一次数值加一

修改按键颜色

#include <lvgl.h>
#include <TFT_eSPI.h>/*If you want to use the LVGL examples,make sure to install the lv_examples Arduino libraryand uncomment the following line.
#include <lv_examples.h>
*/// #include <lv_demo.h>#define LV_USE_LOG 1TFT_eSPI tft = TFT_eSPI(); /* TFT instance *//*Change to your screen resolution*/
static const uint32_t screenWidth  = 320;
static const uint32_t screenHeight = 240;static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * 10 ];static lv_style_t style_btn;
#if LV_USE_LOG != 0
/* Serial debugging */
void my_print( lv_log_level_t level, const char * file, uint32_t line, const char * fn_name, const char * dsc )
{Serial.printf( "%s(%s)@%d->%s\r\n", file, fn_name, line, dsc );Serial.flush();
}
#endif/* Display flushing */
void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
{uint32_t w = ( area->x2 - area->x1 + 1 );uint32_t h = ( area->y2 - area->y1 + 1 );tft.startWrite();tft.setAddrWindow( area->x1, area->y1, w, h );tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );tft.endWrite();lv_disp_flush_ready( disp );
}/*Read the touchpad*/
void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
{uint16_t touchX, touchY;bool touched = tft.getTouch( &touchX, &touchY, 600 );if( !touched ){data->state = LV_INDEV_STATE_REL;}else{data->state = LV_INDEV_STATE_PR;/*Set the coordinates*/data->point.x = touchX;data->point.y = touchY;Serial.print( "Data x " );Serial.println( touchX );Serial.print( "Data y " );Serial.println( touchY );}
}static void btn_event_callback(lv_event_t* event)
{static uint32_t counter = 1;lv_obj_t* btn = lv_event_get_target(event); //获取事件对象if (btn != NULL){lv_obj_t* label = lv_obj_get_child(btn, 0); // 获取第一个子对象if (label != NULL){lv_label_set_text_fmt(label, "%d", counter); //设置显示内容counter++;}}
}void lv_button_click_event_test()
{lv_obj_t* btn = lv_btn_create(lv_scr_act()); // 创建Button对象if (btn != NULL){lv_obj_add_style(btn, &style_btn, LV_STATE_DEFAULT); // 给按钮对象添加默认样式lv_style_set_bg_color(&style_btn, lv_palette_main(LV_PALETTE_RED)); // 样式背景色为红色lv_obj_set_size(btn, 100, 50); // 设置对象大小,宽度和高度lv_obj_set_pos(btn, 110, 100);; // 设置按钮位置,即X和Y坐标lv_obj_add_event_cb(btn, btn_event_callback, LV_EVENT_CLICKED, NULL); // 给对象添加CLICK事件和事件处理回调函数lv_obj_t* label = lv_label_create(btn); // 基于Button对象创建Label对象if (label != NULL){lv_label_set_text(label, "Click me!"); // 设置显示内容lv_obj_center(label); // 对象居中显示}}
}
/*
static void slider_event_callback(lv_event_t* event)
{lv_obj_t * slider = lv_event_get_target(event);if (slider != NULL){lv_obj_t* label = (lv_obj_t* )lv_event_get_user_data(event);if (label != NULL){// 刷新label对象的文本lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 设置对齐,label对象在slider对象上方中间位置}}
}void lv_slider_test()
{lv_obj_t * slider = lv_slider_create(lv_scr_act()); // 创建滑块对象if (slider != NULL){lv_obj_set_width(slider, 200); // 设置slider的宽度lv_obj_center(slider);  // 对样显示在屏幕中央lv_slider_set_range(slider, 0, 1024); // 设置滑块值的变化范围0-1024lv_obj_t* label = lv_label_create(lv_scr_act()); // 创建一个标签,用于显示滑块的滑动值if (label != NULL){lv_label_set_text_fmt(label, "%d", lv_slider_get_min_value(slider)); // 标签默认显示滑块的最小值lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 标签对象放在slider对象的上方中间位置// 添加滑块值变化事件和事件回调函数,并将label对象最为事件的user_datalv_obj_add_event_cb(slider, slider_event_callback, LV_EVENT_VALUE_CHANGED, (void *)label);}}
}*/void setup()
{Serial.begin( 115200 ); /* prepare for possible serial debug */Serial.println( "Hello Arduino! (V8.0.X)" );Serial.println( "I am LVGL_Arduino" );lv_init();#if LV_USE_LOG != 0// lv_log_register_print_cb( my_print ); /* register print function for debugging */
#endiftft.begin();          /* TFT init */tft.setRotation( 1 ); /* Landscape orientation, flipped *//*Set the touchscreen calibration data,the actual data for your display can be aquired usingthe Generic -> Touch_calibrate example from the TFT_eSPI library*/uint16_t calData[5] = { 442, 3414, 336, 3425, 3 };tft.setTouch(calData);lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * 10 );/*Initialize the display*/static lv_disp_drv_t disp_drv;lv_disp_drv_init( &disp_drv );/*Change the following line to your display resolution*/disp_drv.hor_res = screenWidth;disp_drv.ver_res = screenHeight;disp_drv.flush_cb = my_disp_flush;disp_drv.draw_buf = &draw_buf;lv_disp_drv_register( &disp_drv );/*Initialize the (dummy) input device driver*/static lv_indev_drv_t indev_drv;lv_indev_drv_init( &indev_drv );indev_drv.type = LV_INDEV_TYPE_POINTER;indev_drv.read_cb = my_touchpad_read;lv_indev_drv_register( &indev_drv );#if 0/* Create simple label */lv_obj_t *label = lv_label_create( lv_scr_act() );lv_label_set_text( label, "Hello Arduino! (V8.0.X)" );lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 );
#elselv_button_click_event_test();
//   lv_slider_test();/* Try an example from the lv_examples Arduino librarymake sure to include it as written above.lv_example_btn_1();*/// uncomment one of these demos// lv_demo_widgets();            // OK// lv_demo_benchmark();          // OK// lv_demo_keypad_encoder();     // works, but I haven't an encoder// lv_demo_music();              // NOK// lv_demo_printer();// lv_demo_stress();             // seems to be OK
#endifSerial.println( "Setup done" );
}void loop()
{lv_timer_handler(); /* let the GUI do its work */lv_tick_inc(5);delay(5);
}

效果

也可以调为其他颜色

主要是这二句

lv_obj_add_style(btn, &style_btn, LV_STATE_DEFAULT); // 给按钮对象添加默认样式
lv_style_set_bg_color(&style_btn, lv_palette_main(LV_PALETTE_YELLOW)); // 样式背景色为黄色

颜色名称如下:

  • LV_PALETTE_RED

  • LV_PALETTE_PINK

  • LV_PALETTE_PURPLE

  • LV_PALETTE_DEEP_PURPLE

  • LV_PALETTE_INDIGO

  • LV_PALETTE_BLUE

  • LV_PALETTE_LIGHT_BLUE

  • LV_PALETTE_CYAN

  • LV_PALETTE_TEAL

  • LV_PALETTE_GREEN

  • LV_PALETTE_LIGHT_GREEN

  • LV_PALETTE_LIME

  • LV_PALETTE_YELLOW

  • LV_PALETTE_AMBER

  • LV_PALETTE_ORANGE

  • LV_PALETTE_DEEP_ORANGE

  • LV_PALETTE_BROWN

  • LV_PALETTE_BLUE_GREY

  • LV_PALETTE_GREY

设置为圆角矩阵

代码

#include <lvgl.h>
#include <TFT_eSPI.h>/*If you want to use the LVGL examples,make sure to install the lv_examples Arduino libraryand uncomment the following line.
#include <lv_examples.h>
*/// #include <lv_demo.h>#define LV_USE_LOG 1TFT_eSPI tft = TFT_eSPI(); /* TFT instance *//*Change to your screen resolution*/
static const uint32_t screenWidth  = 320;
static const uint32_t screenHeight = 240;static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * 10 ];static lv_style_t style_btn;
#if LV_USE_LOG != 0
/* Serial debugging */
void my_print( lv_log_level_t level, const char * file, uint32_t line, const char * fn_name, const char * dsc )
{Serial.printf( "%s(%s)@%d->%s\r\n", file, fn_name, line, dsc );Serial.flush();
}
#endif/* Display flushing */
void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
{uint32_t w = ( area->x2 - area->x1 + 1 );uint32_t h = ( area->y2 - area->y1 + 1 );tft.startWrite();tft.setAddrWindow( area->x1, area->y1, w, h );tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );tft.endWrite();lv_disp_flush_ready( disp );
}/*Read the touchpad*/
void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
{uint16_t touchX, touchY;bool touched = tft.getTouch( &touchX, &touchY, 600 );if( !touched ){data->state = LV_INDEV_STATE_REL;}else{data->state = LV_INDEV_STATE_PR;/*Set the coordinates*/data->point.x = touchX;data->point.y = touchY;Serial.print( "Data x " );Serial.println( touchX );Serial.print( "Data y " );Serial.println( touchY );}
}static void btn_event_callback(lv_event_t* event)
{static uint32_t counter = 1;lv_obj_t* btn = lv_event_get_target(event); //获取事件对象if (btn != NULL){lv_obj_t* label = lv_obj_get_child(btn, 0); // 获取第一个子对象if (label != NULL){lv_label_set_text_fmt(label, "%d", counter); //设置显示内容counter++;}}
}void lv_button_click_event_test()
{/*lv_obj_t* label = NULL;lv_style_reset(&style_btn); // 重置按钮样式lv_style_init(&style_btn); // 初始化按钮样式lv_style_set_bg_color(&style_btn, lv_palette_main(LV_PALETTE_RED)); // 样式背景色为红色*/lv_obj_t* btn = lv_btn_create(lv_scr_act()); // 创建Button对象if (btn != NULL){lv_obj_add_style(btn, &style_btn, LV_STATE_DEFAULT); // 给按钮对象添加默认样式lv_style_set_bg_color(&style_btn, lv_palette_main(LV_PALETTE_YELLOW)); // 样式背景色为黄色lv_obj_set_style_radius(btn, LV_RADIUS_CIRCLE, 0);  // 添加按钮对象的圆角弧度样lv_obj_set_size(btn, 100, 50); // 设置对象大小,宽度和高度lv_obj_set_pos(btn, 110, 100);; // 设置按钮位置,即X和Y坐标lv_obj_add_event_cb(btn, btn_event_callback, LV_EVENT_CLICKED, NULL); // 给对象添加CLICK事件和事件处理回调函数lv_obj_t* label = lv_label_create(btn); // 基于Button对象创建Label对象if (label != NULL){lv_label_set_text(label, "Click me!"); // 设置显示内容lv_obj_center(label); // 对象居中显示}}
}
/*
static void slider_event_callback(lv_event_t* event)
{lv_obj_t * slider = lv_event_get_target(event);if (slider != NULL){lv_obj_t* label = (lv_obj_t* )lv_event_get_user_data(event);if (label != NULL){// 刷新label对象的文本lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 设置对齐,label对象在slider对象上方中间位置}}
}void lv_slider_test()
{lv_obj_t * slider = lv_slider_create(lv_scr_act()); // 创建滑块对象if (slider != NULL){lv_obj_set_width(slider, 200); // 设置slider的宽度lv_obj_center(slider);  // 对样显示在屏幕中央lv_slider_set_range(slider, 0, 1024); // 设置滑块值的变化范围0-1024lv_obj_t* label = lv_label_create(lv_scr_act()); // 创建一个标签,用于显示滑块的滑动值if (label != NULL){lv_label_set_text_fmt(label, "%d", lv_slider_get_min_value(slider)); // 标签默认显示滑块的最小值lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15);  // 标签对象放在slider对象的上方中间位置// 添加滑块值变化事件和事件回调函数,并将label对象最为事件的user_datalv_obj_add_event_cb(slider, slider_event_callback, LV_EVENT_VALUE_CHANGED, (void *)label);}}
}*/void setup()
{Serial.begin( 115200 ); /* prepare for possible serial debug */Serial.println( "Hello Arduino! (V8.0.X)" );Serial.println( "I am LVGL_Arduino" );lv_init();#if LV_USE_LOG != 0// lv_log_register_print_cb( my_print ); /* register print function for debugging */
#endiftft.begin();          /* TFT init */tft.setRotation( 1 ); /* Landscape orientation, flipped *//*Set the touchscreen calibration data,the actual data for your display can be aquired usingthe Generic -> Touch_calibrate example from the TFT_eSPI library*/uint16_t calData[5] = { 442, 3414, 336, 3425, 3 };tft.setTouch(calData);lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * 10 );/*Initialize the display*/static lv_disp_drv_t disp_drv;lv_disp_drv_init( &disp_drv );/*Change the following line to your display resolution*/disp_drv.hor_res = screenWidth;disp_drv.ver_res = screenHeight;disp_drv.flush_cb = my_disp_flush;disp_drv.draw_buf = &draw_buf;lv_disp_drv_register( &disp_drv );/*Initialize the (dummy) input device driver*/static lv_indev_drv_t indev_drv;lv_indev_drv_init( &indev_drv );indev_drv.type = LV_INDEV_TYPE_POINTER;indev_drv.read_cb = my_touchpad_read;lv_indev_drv_register( &indev_drv );#if 0/* Create simple label */lv_obj_t *label = lv_label_create( lv_scr_act() );lv_label_set_text( label, "Hello Arduino! (V8.0.X)" );lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 );
#elselv_button_click_event_test();
//   lv_slider_test();/* Try an example from the lv_examples Arduino librarymake sure to include it as written above.lv_example_btn_1();*/// uncomment one of these demos// lv_demo_widgets();            // OK// lv_demo_benchmark();          // OK// lv_demo_keypad_encoder();     // works, but I haven't an encoder// lv_demo_music();              // NOK// lv_demo_printer();// lv_demo_stress();             // seems to be OK
#endifSerial.println( "Setup done" );
}void loop()
{lv_timer_handler(); /* let the GUI do its work */lv_tick_inc(5);delay(5);
}

其中主要是这一句

lv_obj_set_style_radius(btn, LV_RADIUS_CIRCLE, 0);  // 添加按钮对象的圆角弧度样

效果

LVGL学习记录:按键相关推荐

  1. 【按键精灵学习记录】以DOTA2人机为例

    [按键精灵学习记录]以DOTA2人机为例 一.写在前面 二.准备工作 1.环境准备 2.需求分析 3.流程图 三.代码实现 1.命令分析 2.代码实现 状态判断 主循环 英雄选择 游戏中 3.实测 四 ...

  2. 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录

    唉   时至今日,已经不知道在嵌入式的道路上到底挣扎了多少个岁月,总感觉要"病入膏肓"了.此间总是不时出现一些疑惑:人家搞 Java.搞 C# 的动不动就是什么架构 / 框架的,搞 ...

  3. 树莓派学习记录1-树莓派系统烧录与无屏幕网线连接开机

    树莓派学习记录1-树莓派系统烧录与无屏幕网线连接开机 1.所需硬件 树莓派3b+板子一个,电源线一根,网线一根, SD卡及读卡器 2.官方烧录工具下载 树莓派官方提供了树莓派的烧录工具,可以直接借助其 ...

  4. JavaScript-WebAPIs学习记录

    JavaScript-WebAPIs学习记录 浏览器交互效果 console.dir(); // 更好地查看里面的属性和方法 javascript:void(0); 或者 javascript:; 可 ...

  5. Cadence Allegro 17.4学习记录开始06-PCB Editor 17.4快捷键的说明和中英文的切换和操作界面放大缩小设置

    目录 Cadence Allegro 17.4学习记录开始06-PCB Editor 17.4快捷键的说明和中英文的切换和操作界面放大缩小设置 PCB Editor 17.4快捷键的说明 第一:env ...

  6. Opencv 入门篇学习记录(图片)

    title: Opencv 入门篇学习记录(图片) Opencv 入门篇学习记录(图片) 前言 很早以前就接触Python了,大学的时候还自学了一段时间去做了课设,写了一些最速梯度下降法.黄金分割法. ...

  7. 【学习记录】QT5界面设计的踩坑记录

    学习记录:QT5 界面设计的踩坑记录 前言 一.Qlabel显示视频与图片 1. 图片显示 1.1 显示格式 1.2 label随界面缩放 1.3 界面刷新 2. 视频显示 二.常见控件的StyleS ...

  8. linux个人学习记录

    linux学习记录 资料: Linux 黑马程序员_bilibili AcWing Linux基础课 可能是东半球最全面易懂的 Tmux 使用教程! Shell 教程 | 菜鸟教程 (runoob.c ...

  9. Android 学习记录(持续更新)

    Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...

最新文章

  1. Go 学习笔记(9)— 循环(for、for range访问数组、切片、字符串和通道、goto、continue、break)
  2. C++ 定时器的用法:SetTimer和Ontimer
  3. 六元均匀直线阵的各元间距为_实验二 均匀直线阵
  4. matlab 误差椭圆,求3倍标准差误差椭圆分析的程序
  5. mariadb修改默认字符集
  6. 【MySQL】MySQL中的死锁
  7. 编码表概述和常见编码表
  8. 为什么acdsee服务器怎在运行,ACDSee 启动时报错的解决方法
  9. 甘超波:NLP理解层次
  10. 每日学英语之041104
  11. 【Linux】计算机的软硬件体系结构
  12. Graph Coverage
  13. 【转】伽马校正(Gamma Correction)
  14. 慕课网 前端JS面试技巧 笔记
  15. uip+freemodbus网络通信
  16. 用Java写贪吃蛇小游戏
  17. 计算机毕业设计SSM房地产销售系统【附源码数据库】
  18. 通过PHP 获取身份证相关信息 获取生肖,获取星座,获取年龄,获取性别
  19. 使用AutoCAD画PCB封装和板框
  20. GPIO口模拟串口发送接收(基于H861)

热门文章

  1. matlab sift代码解读,MATLAB SIFT 代码
  2. 快速入门nodejs-前端必会
  3. HEVC标准(draft)翻译--帧间预测1
  4. 多线程访问独立空间全局变量
  5. telnet 命令行 android,telnet登录android手机,可以执行部分linux命令
  6. Latex中如何实现图并列/表并列/以及混合并列排版以及双列变单列
  7. ORM框架你了解多少?
  8. 新型环保集成墙板尺寸规格是多少?常见的有哪些?
  9. 钉钉开发系列(十)SaltUI与WebApi交互
  10. 【H5】网页入门练习