Skip to content

Commit

Permalink
Merge pull request #21 from qjh1227/v2
Browse files Browse the repository at this point in the history
docs: updata overview
  • Loading branch information
YobeZhou authored Oct 18, 2024
2 parents ef19943 + 86bba83 commit 084f3be
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 26 deletions.
18 changes: 9 additions & 9 deletions docs/overview/profiler.rst
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,13 @@ To enable the profiler, set :c:macro:`LV_USE_PROFILER` in ``lv_conf.h`` and conf
<br>


要启用性能分析器,请在 ``lv_conf.h`` 中设置 :c:macro:`LV_USE_PROFILER`,并配置以下选项:
要启用性能分析器,请在 ``lv_conf.h`` 中设置宏 :c:macro:`LV_USE_PROFILER`,并配置以下选项:

1. 通过设置 :c:macro:`LV_USE_PROFILER_BUILTIN` 来启用内置的性能分析器功能。
1. 通过设置宏 :c:macro:`LV_USE_PROFILER_BUILTIN` 来启用内置的性能分析器功能。

2. 缓冲区配置: :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值设置为配置缓冲区大小。较大的缓冲区可以存储更多的跟踪事件信息,减少对渲染的干扰。但这也会导致更高的内存消耗。
2. 缓冲区配置:设置宏 :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值来配置缓冲区大小。较大的缓冲区可以存储更多的跟踪事件信息,减少对渲染的干扰。但这也会导致更高的内存消耗。

3. 时间戳配置:LVGL默认使用精度为1毫秒的 :cpp:func:`lv_tick_get` 函数获取事件发生时的时间戳。因此,它无法准确测量低于1毫秒的间隔。如果您的系统环境可以提供更高的精度(例如1微秒),则可以按以下方式配置性能分析器:
3. 时间戳配置:LVGL默认使用精度为1毫秒的 :cpp:func:`lv_tick_get` 函数获取事件发生时的时间戳。因此,它无法准确测量低于1毫秒的时间间隔。如果您的系统环境可以提供更高的精度(例如1微秒),则可以按以下方式配置性能分析器:

- **UNIX** 环境推荐配置:

Expand Down Expand Up @@ -452,9 +452,9 @@ Taking `NuttX <https://github.com/apache/nuttx>`_ RTOS as an example:
如果您想使用操作系统提供的分析器方法,您可以在 ``lv_conf.h`` 中修改以下配置:

- :c:macro:`LV_PROFILER_INCLUDE`:为分析器函数提供头文件。
- :c:macro:`LV_PROFILER_BEGIN`:分析器开始点函数
- :c:macro:`LV_PROFILER_BEGIN`:分析器起始点函数
- :c:macro:`LV_PROFILER_END`:分析器结束点函数。
- :c:macro:`LV_PROFILER_BEGIN_TAG`:带有自定义标签的分析器开始点函数
- :c:macro:`LV_PROFILER_BEGIN_TAG`:带有自定义标签的分析器起始点函数
- :c:macro:`LV_PROFILER_END_TAG`:带有自定义标签的分析器结束点函数。

以 `NuttX <https://github.com/apache/nuttx>`_ RTOS 为例:
Expand Down Expand Up @@ -497,7 +497,7 @@ Please check the completeness of the logs. If the logs are incomplete, it may be

1. 由于波特率过高引起的串口接收错误。您需要降低波特率。
2. 在打印跟踪日志期间插入了其他线程日志导致的数据损坏。您需要禁用其他线程的日志输出,或者参考上面的配置使用单独的日志输出接口。
3. 确保通过 :c:macro:`LV_PROFILER_BEGIN_TAG/END_TAG` 传递的字符串不是堆栈上的局部变量或者共享内存中的字符串,因为当前仅记录字符串地址,而不复制内容。
3. 确保通过宏 :c:macro:`LV_PROFILER_BEGIN_TAG/END_TAG` 传递的字符串不是堆栈上的局部变量或者共享内存中的字符串,因为当前仅记录字符串地址,而不复制内容。


Function execution time displayed as 0s in Perfetto(功能执行时间显示为0秒在Perfetto中)
Expand Down Expand Up @@ -540,7 +540,7 @@ When the buffer used to store trace events becomes full, the profiler will outpu

当用于存储跟踪事件的缓冲区变满时,分析器会输出缓冲区中的所有数据,这可能会导致 UI 的阻塞和输出过程的卡顿。您可以通过采取以下措施来进行优化:

1. 增加 :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值。较大的缓冲区可以减少日志输出的频率,但也会消耗更多的内存。
1. 增加宏 :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值。较大的缓冲区可以减少日志输出的频率,但也会消耗更多的内存。
2. 优化日志输出函数的执行时间,例如增加串口波特率或改善文件写入速度。


Expand All @@ -565,7 +565,7 @@ If the trace logs are not automatically printed when the buffer is not full, you

如果缓冲区未满时未自动打印跟踪日志,您可以尝试以下方法来强制日志输出:

1. 减小 :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值,以更快地填充缓冲区并触发自动打印。
1. 减小宏 :c:macro:`LV_PROFILER_BUILTIN_BUF_SIZE` 的值,以更快地填充缓冲区并触发自动打印。
2. 手动调用或使用定时器调用 :cpp:func:`lv_profiler_builtin_flush` 函数来强制日志输出。


34 changes: 17 additions & 17 deletions docs/overview/scroll.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ stroke; diagonal scrolling is not possible.
<br>


在LVGL中,滚动非常直观:如果一个对象超出了其父级内容区域(不包括填充的大小),父级就会变成可滚动的,并且会出现滚动条。就是这样。
在LVGL中,滚动的工作方式非常直观:如果一个对象超出了其父对象内容区域(不包括内边距的大小),那么其父对象就会变成可滚动的,并且会出现滚动条。就是这样。

任何对象都可以是可滚动的,包括 ``lv_obj``, ``lv_image``, ``lv_button``, ``lv_meter`` 等等
任何对象都可以是可滚动的,包括 ``lv_obj``, ``lv_image``, ``lv_button``, ``lv_meter``

对象可以在一个操作中水平或垂直滚动;无法进行对角线滚动。

Expand Down Expand Up @@ -67,7 +67,7 @@ following ``mode``\ (s) exist:
- :cpp:enumerator:`LV_SCROLLBAR_MODE_OFF`:从不显示滚动条
- :cpp:enumerator:`LV_SCROLLBAR_MODE_ON`:始终显示滚动条
- :cpp:enumerator:`LV_SCROLLBAR_MODE_ACTIVE`:在对象滚动时显示滚动条
- :cpp:enumerator:`LV_SCROLLBAR_MODE_AUTO`:当内容足够大时显示滚动条进行滚动
- :cpp:enumerator:`LV_SCROLLBAR_MODE_AUTO`:当内容足够大可以滚动时显示滚动条

通过 ``lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_...)`` 可以设置对象上的滚动条模式。

Expand Down Expand Up @@ -138,7 +138,7 @@ base direction.
lv_obj_add_style(obj, &style_red, LV_PART_SCROLLBAR);
当对象被滚动时,对象进入 :cpp:enumerator:`LV_STATE_SCROLLED` 状态。这允许当滚动时,向滚动条或对象本身添加不同的样式。此代码使对象被滚动时滚动条变蓝色:
当对象正在被滚动时,它会进入 :cpp:enumerator:`LV_STATE_SCROLLED` 状态。这允许当滚动时,向滚动条或对象本身添加不同的样式。此代码使对象被滚动时滚动条变蓝色:

.. code:: c
Expand Down Expand Up @@ -248,7 +248,7 @@ OR-ed values are also possible. E.g. :cpp:expr:`LV_DIR_TOP | LV_DIR_LEFT`.

可以使用 :cpp:expr:`lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE)` 来使对象不可滚动。

不可滚动的对象仍然可以将滚动(链)传播到它们的父级
不可滚动的对象仍然可以将滚动(链)传播到它们的父对象

滚动的方向可以通过 ``lv_obj_set_scroll_dir(obj, LV_DIR_...)`` 来控制。

Expand Down Expand Up @@ -290,9 +290,9 @@ parent(s) won't be scrolled.
<br>


如果一个对象无法进一步滚动(例如,其内容已经到达最底部位置),额外的滚动将传递给其父级。如果在该方向上可以滚动父级,则父级将被滚动。它会继续传递给祖父和曾祖父级
如果一个对象无法进一步滚动(例如,其内容已经到达最底部位置),额外的滚动将传递给其父对象。如果在该方向上可以滚动父对象,则父对象将被滚动。它会继续传递给祖父和曾祖父对象

滚动传播被称为“滚动链”,可以使用 ``LV_OBJ_FLAG_SCROLL_CHAIN_HOR/VER`` 标志来启用/禁用它。如果禁用了链式滚动,传播将停止在该对象上,并且父级将不会滚动
滚动传播被称为“滚动链”,可以使用 ``LV_OBJ_FLAG_SCROLL_CHAIN_HOR/VER`` 标志来启用/禁用它。如果禁用了链式滚动,传播将在该对象处停止,并且父对象(们)将不会滚动


Scroll momentum(滚动惯性效果)
Expand Down Expand Up @@ -385,7 +385,7 @@ Under the hood the following happens:
<br>


这个对象的子项可以根据特定规则进行对齐。当滚动结束时,子项可以通过 :cpp:enumerator:`LV_OBJ_FLAG_SNAPPABLE` 标志单独进行对齐。
这个对象的子对象可以根据特定规则进行对齐。当滚动结束时,子对象可以通过设置 :cpp:enumerator:`LV_OBJ_FLAG_SNAPPABLE` 标志单独进行对齐。

一个对象可以以四种方式对齐被捕获的子项:

Expand All @@ -394,14 +394,14 @@ Under the hood the following happens:
- :cpp:enumerator:`LV_SCROLL_SNAP_END`: 将子项对齐到滚动对象的右/底部
- :cpp:enumerator:`LV_SCROLL_SNAP_CENTER`: 将子项对齐到滚动对象的中心

捕获对齐通过 ``lv_obj_set_scroll_snap_x/y(obj, LV_SCROLL_SNAP_...)`` 进行设置
通过 ``lv_obj_set_scroll_snap_x/y(obj, LV_SCROLL_SNAP_...)`` 设置对齐方式

在底层,以下操作会发生:

1. 用户滚动对象并释放屏幕
2. LVGL根据滚动动量计算滚动结束的位置
3. LVGL找到最近的滚动点
4. LVGL以动画的方式滚动到捕获点
4. LVGL以动画的方式滚动到对齐点


Scroll one(只滚动一个)
Expand Down Expand Up @@ -509,12 +509,12 @@ functions:

以下API函数允许手动滚动对象:

- ``lv_obj_scroll_by(obj, x, y, LV_ANIM_ON/OFF)`` 通过 ``x`` 和 ``y`` 的值滚动
- ``lv_obj_scroll_by(obj, x, y, LV_ANIM_ON/OFF)`` 按照给定的 ``x`` 和 ``y`` 值滚动
- ``lv_obj_scroll_to(obj, x, y, LV_ANIM_ON/OFF)`` 滚动以将给定坐标带到左上角
- ``lv_obj_scroll_to_x(obj, x, LV_ANIM_ON/OFF)`` 滚动以将给定坐标带到左侧
- ``lv_obj_scroll_to_y(obj, y, LV_ANIM_ON/OFF)`` 滚动以将给定坐标带到顶部

偶尔您可能需要检索元素的滚动位置,以便稍后恢复它,或者根据当前滚动动态显示一些元素。以下是一个示例,介绍如何结合滚动事件并存储滚动顶部位置。
有时您可能需要检索元素的滚动位置,以便稍后恢复它,或者根据当前滚动动态显示一些元素。以下是一个示例,介绍如何结合滚动事件并存储滚动顶部位置。

.. code:: c
Expand Down Expand Up @@ -584,15 +584,15 @@ an object. Here is an example to see how to handle the event:
<br>


自尺寸是一个对象的属性。通常情况下,用户不应该使用这个参数,但如果创建了一个自定义窗口部件,它可能是有用的
自身大小是一个对象的属性。通常情况下,用户不应该使用这个参数,但如果创建了一个自定义控件,它可能会很有用

简而言之,自尺寸确定了对象内容的大小。为了更好地理解,以表格为例。假设它有10行,每行高度为50像素。
简而言之,自身大小确定了对象内容的大小。为了更好地理解,以表格为例。假设它有10行,每行高度为50像素。
因此,内容的总高度是500像素。换句话说,“自身高度”为500像素。
如果用户为表格仅设置了200像素的高度,LVGL将会发现自尺寸更大,并使表格可滚动。
如果用户为表格仅设置了200像素的高度,LVGL将会发现自身大小更大,并使表格可滚动。

这意味着不仅子对象可以使一个对象可滚动,而且更大的自尺寸也可以
这意味着不仅子对象可以使一个对象可滚动,而且更大的自身大小也可以

LVGL使用 :cpp:enumerator:`LV_EVENT_GET_SELF_SIZE` 事件来获取一个对象的自尺寸。下面是一个处理该事件的示例:
LVGL使用 :cpp:enumerator:`LV_EVENT_GET_SELF_SIZE` 事件来获取一个对象的自身大小。下面是一个处理该事件的示例:

.. code:: c
Expand Down

0 comments on commit 084f3be

Please sign in to comment.