lv_obj基础对象介绍

API 接口




演示代码如下:

#include "test.h"
#include <stdio.h>void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象lv_obj_t* scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.lv_obj_t* obj1 = lv_obj_create(scr,NULL);}

运行代码如下:

这个就是默认的对象,有默认的颜色和大小。


演示代码如下:(当点击按钮后,默认对象被删除。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_del(obj1);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象lv_obj_t* scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

运行效果如下:


将上面代码中的 btn1_event_cb 中的 lv_obj_del 换成 lv_obj_del_async ,演示效果是一样的。

演示代码如下:(当点击按钮后,清空所有 obj1 下的所有子对象。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_style_t style1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_clean(obj1);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象lv_obj_t* scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置坐标lv_obj_set_pos(obj1,50,50);//创建一个默认对象lv_obj_t* child1 = lv_obj_create(obj1,NULL);//设置大小lv_obj_set_size(child1,20,20);//定义 lv_style_t 这种变量时要定义成静态局部变量或者定义为全局变量。//static lv_style_t sty1;//因为一个样式中的属性有很多//所以这里为了避免麻烦,先从一个现成的样式中进行拷贝//lv_style_plain_color是 LittleVGL 中自带的lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;lv_obj_set_style(child1,&style1);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

运行效果如下:

子对象的坐标原点是以父对象的原点为参考点的,如下图所示。obj1 的父对象是窗体,因此,当设定 obj1 的坐标为(50,50)是以父对象的原点为参考点的。而 child1 的父对象又是 obj1,所以尽管没有设置 child1 的坐标位置,它还是显示在了 (50,50)的位置。

2.2.6 用到的地方不多,不讲。

演示代码如下:(当点击按钮后,将 child1 的父对象从 obj1 变为 child1。注意位置的变化)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_style_t style1;lv_obj_t* scr;lv_obj_t* child1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_parent(child1,scr);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置坐标lv_obj_set_pos(obj1,50,50);//创建一个默认对象child1 = lv_obj_create(obj1,NULL);//设置大小lv_obj_set_size(child1,20,20);//定义 lv_style_t 这种变量时要定义成静态局部变量或者定义为全局变量。//static lv_style_t sty1;//因为一个样式中的属性有很多//所以这里为了避免麻烦,先从一个现成的样式中进行拷贝//lv_style_plain_color是 LittleVGL 中自带的lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;lv_obj_set_style(child1,&style1);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

运行效果如下:


演示代码如下:(初始时 obj1 位于最前面,按键每按下一次就切换一下。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1,*obj2;lv_obj_t* scr;lv_style_t style1;int flag = 0;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){flag++;if(flag == 1){lv_obj_move_foreground(obj2);}if(flag == 2){lv_obj_move_background(obj2);flag = 0;}}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置坐标lv_obj_set_pos(obj1,50,50);// 用 copy参数将 obj1 对象上的属性值复制过来创建 obj2obj2 = lv_obj_create(scr,obj1);lv_obj_set_style(obj2,&style1);//初始时 obj1 位于最前面lv_obj_move_foreground(obj1);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

运行效果如下:










演示代码如下:(当按键按下后,任务一被创建,然后系统每间隔 1 s 就调用一次任务一的回调函数,回调函数的内容是切换对齐方式。总共有21种对齐方式,仿照上面图片。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1,*obj2;lv_obj_t* scr;lv_style_t style1;lv_task_t* task1;// task1的回调函数 -- 注意格式
void task1_cb(lv_task_t* task)
{static uint32_t align = 0;if(align > LV_ALIGN_OUT_RIGHT_BOTTOM){align = LV_ALIGN_CENTER;}lv_obj_align(obj2, obj1, align, 0,0);align++;
}//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){task1 = lv_task_create(task1_cb, 1000, LV_TASK_PRIO_MID, NULL);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);// 用 copy参数将 obj1 对象上的属性值复制过来创建 obj2obj2 = lv_obj_create(scr,obj1);lv_obj_set_style(obj2,&style1);lv_obj_set_size(obj2,50,50);lv_obj_set_pos(obj2,150,150);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

运行效果如下:

此外,还有偏移,偏移可设置为负数(表示反方向)。

lv_obj_align_origo 和 lv_obj_align 的对齐原理是相同的,只不过 lv_obj_align_origo 接口是以 obj 对象的中心点来跟 base 参考对象进行对齐的。

采用与上面同样的事例,只不过把函数 lv_obj_align 给替换成 lv_obj_align_origo ,来看下效果。


重复一下最后一次的对齐操作。

自动重新对齐函数,免去手动调用上面的重新对齐函数。

不讲。



演示代码如下:(当按键按下后,默认对象 obj1 和 obj2 隐藏)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1,*obj2;lv_obj_t* scr;lv_style_t style1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_hidden(obj1, true);lv_obj_set_hidden(obj2, true);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);// 用 copy参数将 obj1 对象上的属性值复制过来创建 obj2obj2 = lv_obj_create(scr,obj1);lv_obj_set_style(obj2,&style1);lv_obj_set_size(obj2,50,50);lv_obj_set_pos(obj2,150,150);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

演示如下:


默认情况下,基础对象是没有开启点击事件的,比如这里的 obj1 。如果想要开启,就可以使用这里的函数来开启。

代码如下:(初始时,ob1处于隐身状态,当点击按钮后,开启 ob1 的点击事件功能,当点击 ob1 时关闭按钮的点击事件。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_obj_t* scr;//声明一个按钮的事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_hidden(obj1, false);lv_obj_set_click(obj1,true);}}
}//声明一个obj1的事件回调函数
void obj1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == obj1){if(event==LV_EVENT_RELEASED){lv_obj_set_click(btn1,false);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);//初始时obj1处于隐身状态lv_obj_set_hidden(obj1, true);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置按钮的事件回调函数lv_obj_set_event_cb(btn1,btn1_event_cb);//设置obj1的事件回调函数lv_obj_set_event_cb(obj1,obj1_event_cb);
}

演示效果如下:



默认情况下,基础对象和这里的按钮都是不可以被拖拽的,当调用这个接口后,所设置的那个对象就可以被拖拽。

代码如下:(初始时,ob1 处于隐身状态,当点击按钮后,关闭 ob1 隐身状态,同时允许 obj1 的拖拽功能。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_obj_t* scr;//声明一个按钮的事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_hidden(obj1, false);lv_obj_set_drag(obj1, true);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);//初始时obj1处于隐身状态lv_obj_set_hidden(obj1, true);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置按钮的事件回调函数lv_obj_set_event_cb(btn1,btn1_event_cb);
}

enum {LV_DRAG_DIR_HOR = 0x1, /**< Object can be dragged horizontally. */LV_DRAG_DIR_VER = 0x2, /**< Object can be dragged vertically. */LV_DRAG_DIR_ALL = 0x3, /**< Object can be dragged in all directions. */
};typedef uint8_t lv_drag_dir_t;

这三种方向,分别是水平、垂直和所有方向。

代码如下:(初始时,ob1 处于隐身状态,当点击按钮后,关闭 ob1 隐身状态,同时允许 obj1 的水平方向拖拽功能。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_obj_t* scr;//声明一个按钮的事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_hidden(obj1, false);lv_obj_set_drag_dir(obj1, LV_DRAG_DIR_HOR);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);//初始时obj1处于隐身状态lv_obj_set_hidden(obj1, true);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置按钮的事件回调函数lv_obj_set_event_cb(btn1,btn1_event_cb);
}

演示效果如下:


使用对象调用该函数之前,首先要使能该对象的拖拽功能。

代码如下:(初始时,obj1 处于隐身状态,当点击按钮后,关闭 obj1 隐身状态,同时允许 obj1 的拖拽滑动功能。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_obj_t* scr;//声明一个按钮的事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_hidden(obj1, false);lv_obj_set_drag(obj1, true);lv_obj_set_drag_throw(obj1, true);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置大小lv_obj_set_size(obj1,100,100);//设置坐标lv_obj_set_pos(obj1,80,80);//初始时obj1处于隐身状态lv_obj_set_hidden(obj1, true);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,300,80);//设置按钮的事件回调函数lv_obj_set_event_cb(btn1,btn1_event_cb);
}

演示效果如下:

可以看出,当拖拽控件的时候,松手后,控件还会继续向前滑动一段距离。

也有可能用力过猛,滑出窗体。演示如下:


使用对象调用该函数之前,首先要使能该对象以及该对象的父对象的拖拽功能。当拖动子对象时,父对象会跟着一起跑,当拖动父对象时,子对象也会跟着一起跑。但是如果虽然使能了子对象的拖拽功能,却没有使能父对象的拖拽功能,反而会导致子对象无法被拖拽了。

代码如下:(child1 是obj1 的子对象,当点击按钮后,使能 obj1 和 child1 的拖拽功能以及使能对象的父容器联动拖拽功能。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;lv_style_t style1;lv_obj_t* child1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_drag(obj1, true);lv_obj_set_drag(child1, true);lv_obj_set_drag_parent(child1,true);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象lv_obj_t* scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置坐标lv_obj_set_pos(obj1,50,50);//创建一个默认对象child1 = lv_obj_create(obj1,NULL);//设置大小lv_obj_set_size(child1,20,20);//设置坐标lv_obj_set_pos(child1,20,20);//定义 lv_style_t 这种变量时要定义成静态局部变量或者定义为全局变量。//static lv_style_t sty1;//因为一个样式中的属性有很多//所以这里为了避免麻烦,先从一个现成的样式中进行拷贝//lv_style_plain_color是 LittleVGL 中自带的lv_style_copy(&style1,&lv_style_plain_color);//设置样式 -- 将个别需要修改的样式进行修改//style1.body.main_color是设置背景的上半部分颜色//style1.body.grad_color是设置背景的下半部分颜色//这里均设置为红色style1.body.main_color = LV_COLOR_RED;style1.body.grad_color = LV_COLOR_RED;lv_obj_set_style(child1,&style1);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

演示效果如下:

为了提高拖动的灵敏度,可以增大对象的尺寸。

如果使能了子对象的拖拽功能,没有使能父对象的拖拽功能,且没有设置联动功能,子对象也只能在父对象里面进行拖拽,如下图所示。



没举例子。

设置对象透明度之前需要使能对象的透明度功能。

代码如下:(当点击按钮后,使能 obj1 的透明度功能,同时将 obj1 的透明度设置为 0 。)

#include "test.h"
#include <stdio.h>//创建一个按钮
lv_obj_t* btn1;
//创建一个默认对象
lv_obj_t* obj1;//声明一个事件回调函数
void btn1_event_cb(lv_obj_t* obj,lv_event_t event)
{if(obj == btn1){if(event==LV_EVENT_RELEASED){lv_obj_set_opa_scale_enable(obj1,true);lv_obj_set_opa_scale(obj1,0);}}
}void test_start()
{// lv_scr_act 是获取当前活动的屏幕对象lv_obj_t* scr = lv_scr_act();// lv_obj_create的第一个参数是parent,即指向父对象,如果传 NULL 的话,则是在创建一个 screen.// 第二个参数是copy,此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来,这里不使用,传NULL.obj1 = lv_obj_create(scr,NULL);//设置坐标lv_obj_set_pos(obj1,50,50);//创建按钮btn1 = lv_btn_create(scr,NULL);//设置坐标lv_obj_set_pos(btn1,200,50);//设置事件回调lv_obj_set_event_cb(btn1,btn1_event_cb);
}

代码运行演示如下:

上面的几个函数不讲。








注:如果不调用该函数,就不要将这个宏使能,因为会造成内存的消耗。

LittleVGL--07lv_obj基础对象介绍、API 接口、例程演示相关推荐

  1. Widget API 接口实例演示(二) ——Telephony类和PIM类

    Widget API 接口实例演示(二) --Telephony类和PIM类 OPhone平台开发, 2010-01-05 15:03:07 标签 : 接口 API PIM Telephony 关于电 ...

  2. php redis type,redis中的几种常用基础对象介绍

    一:前言 redis中有几种常用的基础对象,如string.hash.list.set.zset等,下面我们就来介绍下他们的底层实现数据结构与常见应用场景和特点. 二:redisobject 源码位置 ...

  3. 最新最全的免费股票数据接口--沪深A股基础列表数据API接口(三)

    沪深A股基础实时数据API 数据来源:麦蕊智数 请求方式:Get(直接在浏览器打开就可以看到返回的数据) 数据格式:标准Json格式[{},...{}] 数据时效:实时更新 API说明文档:https ...

  4. 淘宝/天猫同款商品搜索API接口详细演示

    item_search_samestyle-搜索同款的商品 [查看演示] API测试工具 注册开通 onebound.taobao.item_search_samestyle 公共参数 请求地址: h ...

  5. Python 技术篇-百度语音合成API接口调用演示

    百度语音合成api文档 现在演示的是调用百度语音合成,然后再转化为本地 mp3 的内容. 重要:tok 参数的获取请看上一篇文章: Python 技术篇-百度语音API鉴权认证获取Access Tok ...

  6. Python 技术篇-百度语音识别API接口调用演示

    百度语音识别api官网文档 现在演示的是识别音频文件的内容. 重要:token 参数的获取请看上一篇文章: Python 技术篇-百度语音API鉴权认证获取Access Token 注:下面的 tok ...

  7. android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例

    1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的smsc ...

  8. API接口安全—webservice、Swagger、WEBpack

    API接口安全-webservice.Swagger.WEBpack 1. API接口介绍 1.1. 常用的API接口类 1.1.1. API接口分类 1.1.1.1. 类库型API 1.1.1.2. ...

  9. 程序员不得不知道的 API 接口常识

    说实话,我非常希望两年前刚准备找实习的自己能看到本篇文章,那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写. 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加.修 ...

  10. 分享一些前端开发者需要知道的 API 接口常识

    作者: 胡涂阿菌 链接:https://www.cnblogs.com/tanshaoshenghao/p/16215751.html 说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂, ...

最新文章

  1. 【图论专题】拓扑排序
  2. 基于SSM实现社区医院管理系统
  3. opencv4 图像无缝融合
  4. 设计模式之适配器模式--java描述
  5. jmeter HTTPS和HTTP的区别
  6. 企业有了程序员为什么还要用 低代码/无代码
  7. String str=“i“与 String str=new String(“i”)一样吗?
  8. Oracle查询一个范围,oracle字段范围查询
  9. SPSS-论文常用格式-三线表
  10. 微信打印实现过程和免费下载
  11. PRCV2021 第四届中国模式识别与计算机视觉大会开放注册
  12. python——字符串练习:句子反转(小米笔试题)
  13. Linux上安装Mysql
  14. 【githubshare】KCon 黑客大会演讲 macOS Big Sur 内核漏洞挖掘、云虚拟化安全、服务器硬件可信与安全实践
  15. Deep Learning读书笔记4---深度模型中的优化
  16. 3D Vision Rebuttal
  17. 系统架构师----笔记
  18. (华师)CSMA技术的P—坚持算法规则是什么?
  19. 【Unity3D读取数据】(一)Txt文档操作(创建、读取、写入、修改)
  20. 7-1 厘米换算英尺英寸 (15 分)

热门文章

  1. PolyCluster: Minimum Fragment Disagreement Clustering for Polyploid Phasing 多聚类:用于多倍体的最小碎片不一致聚类...
  2. 使用 Roadrunner 为 PHP 程序加速
  3. ios微信消息自动朗读_如何使您的iOS设备大声朗读文章,书籍和更多内容
  4. 芋道Docker部署
  5. 向量化回测系列2——全市场股票回测
  6. 使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人
  7. Cesium和thingjs有哪些关系?
  8. 抖音主页头图怎么设置,掌握以下5点技巧即可丨国仁网络资讯
  9. 全微分里dxy是怎么化成xdy+ydx
  10. 【移动安全高级篇】————2、浅谈Android软件安全自动化审计