Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了滑动条控件(lv_slider),本节课带大家学习微调框控件,那么什么是微调框呢?废话不多说,大家还是看图吧! 一 有图有真相 
其实我感觉翻译成微调框也不太准确,在这里也向大家征集更合适的中文名称。 二 代码分析 用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加spinbox_test()函数测试。 01 | static void spinbox_event_handler(lv_obj_t * obj, lv_event_t event) |
03 | if (event == LV_EVENT_VALUE_CHANGED) { |
04 | printf ( "Value: %d\n" , lv_spinbox_get_value(obj)); |
06 | else if (event == LV_EVENT_CLICKED) { |
08 | lv_spinbox_increment(obj); |
12 | void spinbox_test( void ) |
15 | spinbox = lv_spinbox_create(lv_scr_act(), NULL); |
16 | lv_spinbox_set_digit_format(spinbox, 5, 3); |
17 | lv_spinbox_set_step(spinbox, 10); |
18 | lv_spinbox_set_range(spinbox, 0, 100); |
19 | lv_obj_align(spinbox, NULL, LV_ALIGN_CENTER, 0, 0); |
20 | lv_obj_set_event_cb(spinbox, spinbox_event_handler); |
可以看到这里我们也是有一个回调函数去处理我们每次点击这个微调框后的数值增肌的功能,我们先看主要的: 1 | lv_spinbox_set_digit_format(spinbox, 5, 3); |
2 | lv_spinbox_set_step(spinbox, 10); |
3 | lv_spinbox_set_range(spinbox, 0, 100); |
像创建对象啥的就不再分析了,我们先看一下这三行代码的作用,第一行设置的一共有多少位数字以及小数点在哪一个位置,这里都是十进制的,我们设置为一共五位数字,然后小数点的位置就是从左边第一个数字向右数三位。 然后我们设置每次步进值为10,不过这里的10计算的时候是包括小数点去计算的,也就是我们如果加上小数点那么计算的话,实际上是每次增加0.1,这个主要取决于你的小数点在第几位,之所以这样做的原因主要是浮点数相对来说在处理起来还是比较麻烦的,然后我们设置区间为0到100,同样的这里我们也需要根据小数点的位置进行缩放处理,实际上这个最大值是1,大家明白了吗?就是我们设置的时候是不考虑小数点的,最终的效果你需要根据你设置的小数点的位置进行换算一下。 然后我们在回调函数里有个API需要讲一下: 1 | lv_spinbox_increment(obj); |
这个就是每次你点击微调框的时候以你设置的步进值进行递增的一个函数,那么既然有递增了,肯定还有递减,没错,下面这个函数就是递减。 1 | lv_spinbox_decrement(obj); |
OK,本节课就到这里,我们下节课学习滑动按钮控件(lv_sw),那我们下节课再见! |