lvgl小部件-基础对象学习篇(二)

2023-11-14

lvgl小部件-基础对象学习篇(二)

学习材料/工具

学习过程/内容

  • LVGL 基础对象-坐标

    • 尺寸

    • 位置

    • 对齐

  • 父子关系

  • 屏幕

  • 层次

  • 事件处理

  • 部件

  • 状态

  • 风格

  • 属性

  • 保护

  • 扩展点击区域

  • 事件

  • 按键

  • 范例

    • 具有自定义样式的基础对象
  • 相关API

    • Typedefs

    • enums

    • 函数

简介

基础对象 (lv_obj),LVGL基础对象-概述

基础对象 实现了屏幕上小部件的基本属性 ,例如:

  • 坐标

  • 父对象

  • 子对象

  • 主要风格

  • 属性,例如点击启用、拖动启用等

在面向对象的思想中,它是继承LVGL中所有其他对象的基类。这尤其有助于减少代码重复。

Base 对象的功能也可以与其他小部件一起使用。例如lv_obj_set_width(slider,100);

Base 对象可以直接用作简单的小部件。然后就是矩形。

坐标
  1. 尺寸

可以使用lv_obj_set_width(obj, new_width)和lv_obj_set_height(obj, new_height)在单个坐标轴方向(横向、纵向)上修改对象的大小,或者可以使用lv_obj_set_size(obj, new_width,new_height)同时修改两个坐标轴方向(横向和纵向)的大小。

样式可以向对象添加边距。 Margin(边距)说 “我想要我周围的空间” 。那么我们可以设置对象的宽度: lv_obj_set_width_margin(obj,new_width) 或高度: lv_obj_set_height_margin(obj,new_height) 。更确切地讲是这样: new_width = left_margin + object_width + right_margin 。

要获取包含边距的宽度或高度,请使用lv_obj_get_width/height_margin(obj)。

样式也可以向对象添加填充。填充的意识是我不要我的孩子们离我的身体太近,所以要保留这个空间 。通过lv_obj_set_width_fit(obj,new_width)或高度:lv_obj_set_height_fit(obj, new_height)设置需要填充减小的宽度或高度。

可以以更精确的方式:new_width = left_pad + object_width + right_pad。要获得通过填充减少的宽度或高度。请使用lv_obj_get_widtn/height_fit(obj)。可以将其视为对象的有用大小。

当其他窗口小部件使用布局或自动调整时,边距和填充变得很重要。

  1. 位置

可以使用lv_obj_set_x(obj, new_x)和lv_obj_set_y(obj, new_y)设置对象相对于父级的x和y坐标,或者同时使用lv_obj_set_pos(obj,new_x,new_y)设置相对于父级的x和y坐标。

  1. 对齐

可以使用lv_obj_align(obj, obj_ref, LV_ALIGN_…,x_ofs,y_ofs)将对象与另一个对象对齐。

  • obj 是要对齐的对象

  • obj_ref 是参考对象。obj将与其对齐。如果obj_ref = NULL,则将使用obj的父级。

  • 第三个参数是对齐方式的类型。这些是可能的选项。

对齐类型的构建类似于LV_ALIGN_OUT_TOP_MID。-最后两个参数允许在对齐对象后将其移动指定数量的像素。

例如,要在图像下方对齐文本:lv_obj_align(text,image,LV_ALIGN_OUT_BUTTON_MID,0,10)。或在父级中间对齐文本:lv_obj_align(text,NULL,LV_ALIGN_CENTER,0,0) lv_obj_align_arigo的工作方式与lv_obj_align类似,但它使对象的中心对齐。

例如,lv_obj_align_origo(btn,image,LV_ALIGN_OUT_BOTTOM_MID,0,0)将使按钮的中心与图像底部对齐。

如果在lv_conf.h中启用了LV_USR_OBJ_REALIGN,则路线的参数将保存在对象中。然后,只需调用lv_obj_realign(obj)即可重新对齐对象。等效于使用相同的参数再次调用lv_obj_align。

如果对齐是通过lv_obj_align_origo进行的,则在重新对齐对象时将使用它。

函数lv_obj_align_x/y和lv_obj_align_origo_x/y只能在一个轴上对齐。

如果使用lv_obj_set_auto_realign(obj,true),并且对象的大小在lv_obj_set_width/height/size()函数中更改,则对象将自动重新对齐。当将尺寸动画应用于对象并且需要保留原始位置时,这非常有用。

请注意,屏幕的坐标无法更改。尝试在屏幕上使用这些功能将导致不确定的行为

父子关系

可以使用lv_obj_set_parent(obj,new_parent)为对象设置新的父对象。要获取当前的父对象,请使用lv_obj_get_parent(obj)。

要获取对象的子代,请使用lv_obj_get_child(obj,child_id)(从最后到第一 )或者lv_obj_get_child_back(obj, child_prev)(从第一到最后 )。要获得第一个子代 , 请将NULL作为第二个参数传递,并使用返回值遍历子代。如果没有更多的子级,该函数将返回NULL。例如:


lv_obj_t *child = lv_obj_get_child(parent, NULL);

while(child)
{
    child = lv_obj_get_child(parent,child);
}

lv_obj_count_children(obj) 告知对象上的子代数。

lv_obj_count_children_recursive(obj)也会告知子代数,使用递归计算子代数。

屏幕

创建了lv_obj_t *screen = lv_obj_create(NULL, NULL)之类的屏幕后,可以使用lv_scr_load(screen)加载它。lv_scr_act()函数提供了指向当前屏幕的指针。

如果有更多的显示,那么我们就要知道这些功能,可以在最后创建的或明确选择的显示上运行(使用lv_disp_set_default)。

要获取对象的屏幕,请使用lv_obj_get_screen(obj)函数。

层次

有两个自动生成的层:

  • 顶层lv_layer_top()

  • 系统层lv_layer_sys()

它们独立于屏幕(lv_scr_act()),并且将显示在每个屏幕上。顶层位于屏幕上每个对象的上方,而系统层也位于顶层上方。可以将任何弹窗口自由添加到顶层。但是,系统层仅限于系统级 的内容(例如,鼠标光标将放在lv_index_set_cursor()中)。

层级关系:lv_scr_act() < lv_layer_top() < lv_layer_sys()

lv_layer_top()和lv_layer_sys()函数提供了指向顶层或系统层的指针。

可以使用lv_obj_move_foreground(obj)和lv_obj_move_background(obj)将对象置于前景或背景发送至背景。

阅读对象层级(layer)部分,以了解有关图层的更多信息。

事件处理

要为对象设置事件回调,请使用lv_obj_set_event_cb(obj,event_cb),

要将事件手动发送到对象,请使用lv_event_send(obj,LV_EVENT_…,data)

阅读事件概述以了解有关事件的更多信息。

部件

小部件可以包含多个部件。例如,按钮仅具有主要部分,而滑块则由背景,指示器和旋钮组成。

零件名称的构造类似于LV_ + PART。例如LV_BTN_PART_MAIN或LV_SLIDR_PART_KNOB通常在将样式添加到对象时使用零件。使用零件可以将不同的样式分配给对象的不同零件。

要了解有关零件的更多信息,请阅读样式概述的相关部分。

状态

对象可以处于以下状态的组合:

  • LV_STATE_DEFAULT 默认或正常状态

  • LV_STATE_CHECKED 选中或点击

  • LV_STATE_FOCUSED 通过键盘或编码器聚焦或通过触摸板/鼠标单击

  • LV_STATE_EDITED 由编码器编辑

  • LV_STATE_HOVERED 鼠标悬停(现在还不支持)

  • LV_STATE_PRESSED 按下

  • LV_STATE_DISABLED 禁用或无效

当用户按下、释放、聚焦等对象时,状态通常由库自动检测更改。当然状态也可以手动检测更改。

要完全覆盖当前状态,调用lv_obj_set_state(obj, part,LV_STATE…)

要设置或清除某个状态(但不更改其他状态),调用lv_obj_add/clear/state(obj, part, LV_STATE…)

可以组合使用状态值。例如:lv_obj_set_state(obj, part, LV_STATE_PRESSED | LV_PRESSED_CHECKED)。

要了解有关状态的更多信息,样式概述的相关部分。

风格

确保首先阅读了样式概述部分内容

要将样式添加到对象,请使用lv_obj_add_style(obj,part,&new_style)函数。基础对象使用所有类似矩形的样式属性。

要从对象中删除所有的样式,请使用lv_obj_reset_style_list(obj,part)

如果修改对象已使用的样式,为了刷新影响的对象,可以使用每个对象在对象上使用lv_obj_refresh_style(obj)或使用lv_obj_report_style_mod(&style)通知具有给定样式的所有对象。如果lv_obj_report_style_mod修改为NULL,则将通知所有对象。

属性

调用lv_obj_set_…(obj,true/false)可以启用/禁用一些属性:

  • hidden 隐藏对象。它不会被绘制,输入设备会将其视为不存在。它的子项也将被隐藏。

  • click 允许通过输入设备单击对象。如果禁用,则单击事件将传递到此事件后面的对象。(默认情况下无法点击标签)

  • top 如果启用,则单击此对象或其任何子级时,该对象将进入前台。

  • drag 启用拖动(通过输入设备移动)

  • drag_dir 启用仅在特定方向上拖动。可以是LV_DRAG_DIR_HOR/VER/ALL.

  • drag_throw 通过拖动启用"投掷",就像对象将具有动量一样

  • drag_parent 如果启用,则对象的父对象将在拖动过程中移动。看起来就像拖动父级。递归检查,因此也可以传递给祖父母。

  • parent_event 也将事件传播给父母。递归检查,因此可以传播给祖父母。

  • opa_scale_enable 启用不透明缩放。

保护

库中有一些自动发生的特定操作。为了防止一种或多种此类行为,可以保护对象免受它们侵害。存在以下保护:

  • LV_PROTECT_NONE 没用保护

  • LV_PROTECT_POS 防止自动定位(例如容器中的布局)

  • LV_PROTECT_FOLLOW 防止在自动排序(例如容器布局)中遵循该对象(“换行”)

  • LV_PROTECT_PARENT 防止自动更改父母。(例如,页面将在背景上创建的子代移动到可滚动页面)

  • LV_PROTECT_PRESS_LOST 防止手指滑过对象时丢失。(例如,如果按下某个按钮,则可以将其释放)

  • LV_PROTECT_CLICK_FOCUS 如果对象在"组"中并启用了单击焦点,则阻止其自动聚焦。

  • LV_PROTECT_CHILD_CHG 禁用子对象更换信号。库内部使用。=

lv_obj_add/clear_protect(obj, LV_PROTECT_…)设置/清除保护。也可以使用保护类型的"或"值。

一旦将对象添加具有lv_group_add_obj(group, obj)的组中,则可以通过lv_obj_get_group(obj)获得该对象的当前组。

lv_obj_is_fouced(obj)告知对象当前是否集中在其组上。如果未将对象添加到组中,则将返回false。

阅读输入设备概述以了解有光组的更多信息。

点击扩展区域

默认情况下,只能在对象的坐标上单击对象,但是可以使用lv_obj_set_ext_click_area(obj,left,right,top,bottom)扩展该区域。左侧(left)/右侧(right)/顶部(top)/底部(bottom)描述了可点击区域应在每个方向上超出默认范围的程度。

前提是要在lv_conf.h使能LV_USR_EXT_CLICK_AREA启用此功能。可能的值为:

  • LV_EXT_CLICK_AREA_FULL 将所有4个坐标存储为lv_coord_t

  • LV_EXT_CLICK_AREA_TINY 仅将水平和垂直坐标(使用 左/右和上/下的较大值)存储为uint8_t

  • LV_EXT_CLICK_AREA_OFF 禁用此功能

事件

仅 通用事件 是按对象类型发送的。

了解有关事件更多信息。

按键

对象类型不处理任何输入按键。

进一步了解 按键

范例
  1. 具有自定义样式的基础对象

static void prvCustomBaseObject(void)
{
    lv_obj_t *prObjOne = lv_obj_create(lv_scr_act());

    lv_obj_set_size(prObjOne, 100,50);

    lv_obj_align(prObjOne, NULL, LV_ALIGN_CENTER, -60, -30);

    lv_obj_t *prObjTwo = lv_obj_create(lv_scr_act(),prObjOne);

    lv_obj_align(prObjTwo, NULL, LV_ALIGN_CENTER, 0,0);

    lv_obj_set_drag(prObjTwo,true);

    static lv_style_t prstyleShadow;

    lv_style_init(&prstyleShadow);

    lv_style_set_shadow_width(&prstyleShadow, LV_STATE_DEFAULT, 1,0);

    lv_style_set_shadow_spread(&prstyleShadow, LV_STATE_DEFAULT, 5);

    lv_style_set_shadow_color(&prstyleShadow, LV_STATE_DEFAULT, LV_COLOR_BLUE);

    lv_obj_t  *prObjThree = lv_obj_create(lv_scr_act(), prObjTwo);

    lv_obj_add_style(prObjThree, LV_OBJ_PART_MAIN, &prstyleShadow);

    lv_obj_align(prObjThree, NULL, LV_ALIGN_CENTER, 60,30);

}

学习结果

本篇文章记录了LVGL中有关事件的学习内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lvgl小部件-基础对象学习篇(二) 的相关文章

  • 24分+的医药顶刊带你学习表观组学解析超级热点“肿瘤耐药”的机制

    对癌症患者采用治疗干预时获得性耐药是转移性癌症复发的主要原因 此前 获得性耐药发展的研究主要集中在识别耐药肿瘤中常见的基因突变 越来越多的证据表明 在永久性获得性耐药出现之前 癌症中存在一种表观遗传调控的可逆耐药状态 这种可逆状态可能会导致
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • 世微 AP2402降压恒流驱动IC LED刹车灯方案 全亮 半亮 瀑闪

    AP2402 是一款 PWM 工作模式 高效 率 外围简单 内置功率管 适用于 5 100V 输入的高精度降压 LED 恒流驱动芯片 输 出功率可达 15W 电流 1 5A AP2402 可实现三段功能切换 通过 MODE1 2 3 切换三
  • 通过一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • 【计算机毕业设计】精品课程在线学习系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统精品课程学习信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • 特殊寄存器

    特殊寄存器 文章目录 前言 一 背景 二 2 1 2 2 总结 前言 前期疑问 STM32特殊寄存器到底是什么 特殊寄存器怎么查看和调试代码 本文目标 记录和理解特殊寄存器 一 背景 最近在看ucosIII文章是 里面提到特殊寄存器 这就进
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • 当端点和 PMA 地址均更改时,CubeMX 生成的 USB HID 设备发送错误数据

    我正在调试我正在创建的复合设备的问题 并在新生成的仅 CubeMX 代码中重新创建了该问题 以使其更容易解决 我添加了少量代码main 让我发送 USB HID 鼠标点击 并在按下蓝色按钮时使 LED 闪烁 uint8 t click re
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

    我正在使用 Nucleo STM32L031 和 AC6 STM32 工作台 eclipse 我编写应用程序并进入调试模式 一切正常 直到我在应用程序中添加另一个功能 我注意到当我删除 评论 新函数 软件可以再次进入调试模式 但是当我添加

随机推荐

  • ads原理图生成layout_ADS原理图和版图协同优化仿真方法总结

    1 概述 在用ADS进行射频电路仿真时 在原理图层面仿真完毕后 通常还要考虑实际的射频版图布局中传输线的耦合 印制板介质损耗等效应的影响 此时就要在ADS的版图仿真中来实现 在学习ADS时 需要版图仿真时 通常是先原理建模 然后通过生成版图
  • SpringCloud 微服务服务治理注册中心

    一 什么是服务治理 在传统rpc远程调用中 服务与服务依赖关系 管理比较复杂 所以需要使用服务治理 在这里插入图片描述管理服务与服务之间依赖关系 可以实现服务调用 负载均衡 容错等 实现服务发现与注册 二 服务注册与发现 在服务注册与发现中
  • Unity脚本实现——触摸屏3D模型,随单根手指,无死角旋转(Input的GetTouch方法和touchCount属性)

    Unity脚本实现模型360度旋转 参考别人随手指绕Y轴转动 添加了绕X轴转动 using System Collections using System Collections Generic using UnityEngine publ
  • document 使用方法介绍

    document节点是文档的根节点 每张网页都有自己的document节点 属性 1 document doctype 它是一个对象 包含了当前文档类型 Document Type Declaration 简写DTD 信息 2 docume
  • Tessy — 嵌入式软件单元测试/ 集成测试工具

    Tessy 源自戴姆勒 奔驰公司的软件技术实验室 由德国Hitex 公司负责全球销售及技术支持服务 是一款针对嵌入式软件进行单元 集成测试的工具 它可以对C C 代码进行单元 集成测试 可以自动化搭建测试环境 执行测试 评估测试结果并生成测
  • SpringBoot 线程池的使用

    前言 最近在做订单模块 用户购买服务类产品之后 需要进行预约 预约成功之后分别给商家和用户发送提醒短信 考虑发短信耗时的情况所以我想用异步的方法去执行 于是就在网上看见了Spring的 Async了 但是遇到了许多问题 使得 Async无效
  • flutter Flex Wrap Stack Align布局

    1 flex布局 Flex direction Axis horizontal 水平反向 direction不能为空 direction Axis vertical 垂直反向 Expanded flex 1 实现代码如下 child Con
  • C语言-宏定义

    C语言 宏定义 1 宏定义是什么 2 宏定义怎么用 2 1 宏定义常量 2 1 1 预定义宏 2 1 2 自定义宏 2 2 带参数的宏 2 3 编译预处理 3 宏展开 4 编译预处理指令 1 宏定义是什么 宏是用来表示一段代码的标识符 宏也
  • how to unzip split file

    1 how to unzip split file cat zipfile tar gz tar zxv
  • springBoot整合log4j2

    文章目录 什么是log4j2 springBoot依赖的引入 接下来是log4j2的示例配置 首先在application yml制定采用哪个配置文件 在resources目录下新建log4j2 xml文件 什么是log4j2 Apache
  • Linux系统:stress-ng测压工具

    目录 一 理论 1 stress工具简介与安装 2 语法及参数 3 具体安装 二 实验 1 运行8 cpu 4 fork 5 hdd 4 io 50 vm 10小时 2 CPU测试 3 内存测试 4 IO测试 5 磁盘及I O测试 三 问题
  • Java同步代码块详解

    目录 一 什么是内置锁 二 什么是重入 三 活跃性与性能 四 对象的共享 1 可见性 2 非原子的64位操作 3 volatile变量 一 什么是内置锁 Java提供了一种内置的锁机制来支持原子性 同步代码块 同步代码块包含两部分 一个作为
  • SQL,如何更新表结构

    We can alter an existing table structure using the ALTER TABLE command followed by the alteration you want to make 我们可以使
  • 【Unity】[帮助文档] AddForce函数详解,参数ForceMode(Acceleration、Force、Impulse 和 VelocityChange)的选择

    背景 经常忘 经常查 倒不如我自己写一篇给自己方便参考 毕竟每次都在某N站查出来的都是不知道互抄到哪一年的机翻文章 本文涉及代码与测试参考unity版本为2021 3 AddForce 用于对rigidbody组件对象添加力的作用 其参数决
  • 编程题思路1

    1反转链表 2节点两两反转 3判断链表是否有环 1 0 5毫秒内是否出现Null 2 set中查重 3 快慢指针 4匹配左右括号 5实时判断第K大的元素 大顶堆 实时排序 6 乱序判断 法一 sort NlogN return sorted
  • 手机屏幕的DPI和PPI有什么区别?

    为什么有的手机厂商在屏幕参数一栏标注PPI 而有的手机却标注DPI 这其中又有什么猫腻呢 不同的标注方法会对手机产生那些影响 PPI和DPI的区别是什么 分别都是如何计算的 对你的视觉体验会产生多大的影响呢 DPI即dot per inch
  • 抽取式文档摘要方法(一)

    1 抽取式 从文档中抽取已有句子形成摘要 实现简单 能保证句子的可读性 可看作一个组合优化问题 可与语句压缩一并进行 可看作混合式方法 2 抽取式文档摘要的关键技术 重要信息评估 冗余信息的过滤 碎片化信息的聚合 多源信息的篇章组织 其中单
  • JavaScript——操作浏览器窗口

    学习内容 今天学习了alert提示框 提示框中的内容 就是alert后边小括号中的内容 例如 alert 我要学JavaScript alert 我要学习 学习总结 日常小总结 例如 后面的分号 可以随便去掉 不影响运行效果 不能去掉小括号
  • 在“信创”大背景下 美信时代的业务思路

    数据量的飞速增长 并不是单纯对云端进行扩容就可以完全应对的 大量的数据汇聚到云端进行处理 带来的延迟逐渐让人无法忍受 在移动智能设备终端 延迟往往令实时互动滞后 严重影响体验 在制造业领域 监控瞬时数据量巨大 留给异常数据的处理窗口很小 传
  • lvgl小部件-基础对象学习篇(二)

    lvgl小部件 基础对象学习篇 二 学习材料 工具 QT Creator 5 12 3 lvgl 源代码 极客笔记 学习过程 内容 LVGL 基础对象 坐标 尺寸 位置 对齐 父子关系 屏幕 层次 事件处理 部件 状态 风格 属性 保护 组