improve docs

This commit is contained in:
lixianjing 2021-07-11 17:18:42 +08:00
parent 9a6795fcaa
commit 50b8b3732a
11 changed files with 70 additions and 100 deletions

View File

@ -5,7 +5,7 @@
> 本文前提:
* 安装 node.js
* 安装 python
* 安装 python 3.x
* awtk 编译环境
* 在 bash 中运行
@ -37,23 +37,7 @@ qr_register();
}
```
## 4. 更新 idl
```
cd awtk/tools/idl_gen
node index.js
cd -
```
## 5. 更新 def
```
cd awtk/tools/dll_def_gen
node index.js
cd -
```
## 6. 编译 awtk
## 4. 编译 awtk
```
cd awtk
@ -61,7 +45,7 @@ scons -j2
cd -
```
### 7. 更新绑定代码
### 5. 更新绑定代码
```
git clone https://github.com/zlgopen/awtk-binding
@ -70,7 +54,7 @@ cd awtk-binding
cd -
```
### 8. 同步绑定代码到需要的语言
### 6. 同步绑定代码到需要的语言
```
git clone https://github.com/zlgopen/awtk-jerryscript
@ -79,7 +63,7 @@ cd awtk-jerryscript
scons
```
### 9. 注意
### 7. 注意
* 开发应用程序时记得拷贝自定义控件的 style 到资源中。
* 如果代码下载太慢可以从fastgit下载。
* 如果代码下载太慢,可以从 fastgit 下载。

View File

@ -61,4 +61,3 @@ widget_set_children_layout(w, "list_view(m=10,s=15)");
<scroll_view name="view" x="0" y="0" w="100%" h="100%" children_layout="list_view(m=10,s=15)">
```
> 在不同平台下,命令运行方式有细微差别,请自行调整。

View File

@ -1,10 +1,9 @@
# 如何加入中文输入法
在示例项目中没有加入输入法主要是开发板的flash不够。如果flash够大(不小于4M时),可以自行加入:
* 加入3rd/gpinyin/src中的代码。
* 加入src/input\_engines/input\_engine\_pinyin.cpp。
* 去掉src/input\_engines/input\_engine\_null.cpp。
* include路径加入3rd/gpinyin/include。
* 把default\_full.ttf拷贝到default.tff重新生成资源并编译(defualt.ttf中没有汉字default\_full.ttf里才有所以需要切换字体否则输入的字符无法显示)。
在示例项目中,没有加入输入法,主要是开发板的 flash 不够。如果 flash 够大(不小于 4M 时),可以自行加入:
* 加入 3rd/gpinyin/src 中的代码。
* 加入 src/input\_engines/input\_engine\_pinyin.cpp。
* 去掉 src/input\_engines/input\_engine\_null.cpp。
* include 路径加入 3rd/gpinyin/include。
* 把 default\_full.ttf 拷贝到 default.tff重新生成资源并编译 (defualt.ttf 中没有汉字default\_full.ttf 里才有,所以需要切换字体,否则输入的字符无法显示)。

View File

@ -1,10 +1,10 @@
# Code Style
每个人都有自己喜欢的代码风格AWTK采用的代码风格不可能让所有人喜欢所以AWTK提供了一个配置文件.clang-format借助clang-format工具可以瞬间将AWTK的代码风格变成你喜欢的代码风格。
每个人都有自己喜欢的代码风格AWTK 采用的代码风格不可能让所有人喜欢,所以 AWTK 提供了一个配置文件。clang-format借助 clang-format 工具可以瞬间将 AWTK 的代码风格变成你喜欢的代码风格。
具体做法如下:
## 安装clang-format工具
## 安装 clang-format 工具
请参考http://releases.llvm.org/download.html#7.0.0
@ -14,5 +14,4 @@
## 更新
> 支持bash的平台运行./format.sh即可。Windows平台可以在git bash里运行。
> 支持 bash 的平台运行。/format.sh 即可。Windows 平台可以在 git bash 里运行。

View File

@ -1,31 +1,31 @@
# 颜色格式
AWTK目前支持以下颜色格式
AWTK 目前支持以下颜色格式:
* 十六机制格式。
RGB三个通道分别用两个十六进制的字符表示alpha通道为0xff(即不透明)。如:
RGB 三个通道分别用两个十六进制的字符表示alpha 通道为 0xff即不透明。如:
```
#ffeedd 表示R、G、B分别为0xff、0xee、0xdd
#ffeedd 表示 R、G、B 分别为 0xff、0xee、0xdd
```
* rgb(R,G,B) 格式。
括号中的R、G、B为0到255之间的十进制数alpha通道为0xff(即不透明)。如:
括号中的 R、G、B 为 0 到 255 之间的十进制数alpha 通道为 0xff即不透明。如
```
rgb(100, 150, 200) 表示R、G、B分别为100、150、200
rgb(100, 150, 200) 表示 R、G、B 分别为 100、150、200
```
* rgba(R,G,B,A) 格式。
这是唯一支持半透明颜色的方式。
括号中的R、G、B为0到255之间的十进制数, A的为0到1之间的小数。如:
括号中的 R、G、B 为 0 到 255 之间的十进制数A 的为 0 到 1 之间的小数。如:
```
rgba(100, 150, 200, 0.5) 表示R、G、B, A分别为100、150、200、0.5
rgba(100, 150, 200, 0.5) 表示 R、G、B, A 分别为 100、150、200、0.5
```
> 注意:半透明颜色填充相对于不透明颜色填充,要慢很多,请谨慎使用。

View File

@ -1,29 +1,29 @@
# AWTK 中的一些惯例
#### 1.pixel格式以各个通道在内存中存放的顺序从低地址到高地址递增的方式命名。
#### 1.pixel 格式:以各个通道在内存中存放的顺序,从低地址到高地址递增的方式命名。
>如:
>
>RGBA8888表示内存地址从低到高依次为RGBA每个通道各占一字节(8位)
>RGBA8888表示内存地址从低到高依次为 RGBA每个通道各占一字节 (8 位)
>
>BGR565表示内存地址从低到高依次为BGRBGR三个通道分别占5位6位和5位。
>BGR565表示内存地址从低到高依次为 BGRBGR 三个通道分别占 5 6 位和 5 位。
---
#### 2.所有类的公开属性都是只读的,不要直接去修改它们。
#### 2. 所有类的公开属性都是只读的,不要直接去修改它们。
---
#### 3.所有类的公开属性都可以直接读取不提供get函数。
#### 3. 所有类的公开属性都可以直接读取,不提供 get 函数。
---
#### 4.widget及其子类的公开属性如果在annotation中标明支持set\_prop那么可以在界面描述文件中用同名属性为其指定的初始值。
#### 4.widget 及其子类的公开属性,如果在 annotation 中标明支持 set\_prop那么可以在界面描述文件中用同名属性为其指定的初始值。
---
#### 5.除非特别说明,时间单位为毫秒。
#### 5. 除非特别说明,时间单位为毫秒。
---
#### 6.除非特别说明,控件都是容器。你可以在按钮中放图片,也可以在图片中放按钮,通过组合形成更强大控件。
#### 6. 除非特别说明,控件都是容器。你可以在按钮中放图片,也可以在图片中放按钮,通过组合形成更强大控件。

View File

@ -1,40 +1,38 @@
# AWTK 调试技巧
这里收集一些调试技巧,各种疑难杂症的解决方案。请大家把遇到的问题(包括已经解决的)发到issues上我来收集整理。谢谢
这里收集一些调试技巧,各种疑难杂症的解决方案。请大家把遇到的问题(包括已经解决的)发到 issues 上,我来收集整理。谢谢
## 一、输入设备相关问题
### 1.指针设备问题的检查列表:
### 1. 指针设备问题的检查列表:
* 设备名称是否正确。
* 电阻屏是否校准。
* x/y是否需要对调或其它变换。
* x/y 是否需要对调或其它变换。
## 二、显示相关问题
### 1.图片颜色不正常的检查列表:
### 1. 图片颜色不正常的检查列表:
* LCD的格式是否正确。
* LCD 的格式是否正确。
* 图片格式是否正确。
## 三、资源相关问题
## 四、内存问题
* 1.内存出现莫名其妙的错误
* 1. 内存出现莫名其妙的错误
> 通常是堆栈溢出把栈空间修改大点试试。如果支持jpg/png栈至少32K如果支持gif栈至少48K。
> 通常是堆栈溢出,把栈空间修改大点试试。如果支持 jpg/png栈至少 32K如果支持 gif 栈至少 48K。
* 2.内存泄露
> 如果定义宏了ENABLE\_MEM\_LEAK\_CHECK每次内存分配都会记录分配的位置、大小和时间并在窗口打开和关闭时通过log\_debug显示当前未释放的内存块。根据块数的变化可以看出是否有内存泄露并根据分配的位置可以定位泄露的位置。
* 2. 内存泄露
> 如果定义宏了 ENABLE\_MEM\_LEAK\_CHECK每次内存分配都会记录分配的位置、大小和时间并在窗口打开和关闭时通过 log\_debug 显示当前未释放的内存块。根据块数的变化可以看出是否有内存泄露,并根据分配的位置可以定位泄露的位置。
## 五、性能问题
性能问题的检查列表:
性能问题的检查列表
* 1.硬件加速是否启用。
* 2.memcpy的速度是否正常。
* 3.在window\_manager\_paint\_normal函数中查看last\_paint\_cost是否在合理的范围。
* 1. 硬件加速是否启用。
* 2.memcpy 的速度是否正常。
* 3. window\_manager\_paint\_normal 函数中查看 last\_paint\_cost 是否在合理的范围。

View File

@ -4,11 +4,11 @@
在弹出除对话框时,通常希望让背景窗口变暗或者变模糊,以突显当前的对话框的重要性。我们把让背景窗口变暗或者变模糊的方法称为对话框高亮策略。并把对话框高亮策略抽象成接口,开发者可以自己实现特殊效果的高亮策略,也可以使用缺省的高亮策略。
缺省的对话框高亮策略是让背景窗口变暗,可以是静态的(固定alpha),也可以是动态的。动态的高亮策略在对话框打开的动画过程中,背景窗口逐渐变暗,这有更好的视觉效果,但也需要更多的计算开销,开发者可以根据实际情况选用静态还是动态效果。
缺省的对话框高亮策略是让背景窗口变暗,可以是静态的(固定 alpha),也可以是动态的。动态的高亮策略在对话框打开的动画过程中,背景窗口逐渐变暗,这有更好的视觉效果,但也需要更多的计算开销,开发者可以根据实际情况选用静态还是动态效果。
## 二、使用方法
通过对话框的hightlight属性来指定对话框的高亮策略"default"表示缺省的对话框的高亮策略。如:
通过对话框的 hightlight 属性来指定对话框的高亮策略,"default"表示缺省的对话框的高亮策略。如:
使用静态效果:
@ -24,24 +24,21 @@
x="0" y="bottom" w="100%" h="160">
```
## 三、参数说明
参数其格式为[类似函数调用的参数格式](func_call_params_format.md)。 缺省的对话框高亮策略支持以下几个参数:
参数其格式为 [类似函数调用的参数格式](func_call_params_format.md)。 缺省的对话框高亮策略支持以下几个参数:
* start_alpha 起始alpha值(0-255)。
* end_alpha 结束alpha值(0-255)。
* alpha 相当于将start\_alpha和end\_alpha设置为同一个值。
* start_alpha 起始 alpha (0-255)。
* end_alpha 结束 alpha (0-255)。
* alpha 相当于将 start\_alpha end\_alpha 设置为同一个值。
> 当alpha=0时显示效果没有变化但相当于了缓存背景窗口的绘制到图片中从而提高显示效率在特殊情况下可以酌情使用。
> 当 alpha=0 时,显示效果没有变化,但相当于了缓存背景窗口的绘制到图片中,从而提高显示效率,在特殊情况下可以酌情使用。
## 四、自定义对话框高亮策略
开发者可以自定义高亮策略自定义的高亮策略可以像内置高亮策略一样可以用以上方法在XML文件中启用。
开发者可以自定义高亮策略,自定义的高亮策略可以像内置高亮策略一样,可以用以上方法在 XML 文件中启用。
1.实现dialog\_highlighter\_t接口。如
1. 实现 dialog\_highlighter\_t 接口。如:
```
static const dialog_highlighter_vtable_t s_dialog_highlighter_default_vt = {
@ -66,7 +63,7 @@ dialog_highlighter_t* dialog_highlighter_default_create(object_t* args) {
}
```
2.注册到dialog\_highlighter\_factory工厂。如
2. 注册到 dialog\_highlighter\_factory 工厂。如:
```
dialog_highlighter_factory_register(f, DIALOG_HIGHLIGHTER_DEFAULT,

View File

@ -1,10 +1,10 @@
# AWTK中的事件处理函数
# AWTK 中的事件处理函数
emitter实现了通用的事件注册、注销和分发功能widget对此做了进一步包装使用起来非常方便。
emitter 实现了通用的事件注册、注销和分发功能widget 对此做了进一步包装,使用起来非常方便。
## 一、注册控件事件的处理函数
使用widget_on来注册事件处理函数
使用 widget_on 来注册事件处理函数:
```
/**
@ -16,7 +16,7 @@ emitter实现了通用的事件注册、注销和分发功能widget对此做
* @param {event_func_t} on_event 事件处理函数。
* @param {void*} ctx 事件处理函数上下文。
*
* @return {uint32_t} 返回id用于widget_off。
* @return {uint32_t} 返回 id用于 widget_off。
*/
uint32_t widget_on(widget_t* widget, event_type_t type, event_func_t on_event, void* ctx);
```
@ -48,7 +48,7 @@ widget_on(ok, EVT_CLICK, on_inc, progress_bar);
## 二、注销控件事件的处理函数
由于窗口关闭时会销毁其中所有控件所以一般不需要手工去注销。如果确实需要可以使用widget_off:
由于窗口关闭时会销毁其中所有控件,所以一般不需要手工去注销。如果确实需要,可以使用 widget_off:
```
/**
@ -56,16 +56,16 @@ widget_on(ok, EVT_CLICK, on_inc, progress_bar);
* 注销指定事件的处理函数。
* @scriptable custom
* @param {widget_t*} widget 控件对象。
* @param {uint32_t} id widget_on返回的ID。
* @param {uint32_t} id widget_on 返回的 ID。
*
* @return {ret_t} 返回RET_OK表示成功否则表示失败。
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_off(widget_t* widget, uint32_t id);
```
## 三、控件分发事件
一般只有在控件内部实现中或者需要向控件注入事件时才需要调用事件分发函数。如果需要分发事件可以调用widget_dispatch
一般只有在控件内部实现中,或者需要向控件注入事件时,才需要调用事件分发函数。如果需要分发事件,可以调用 widget_dispatch
```
/**
@ -75,10 +75,7 @@ ret_t widget_off(widget_t* widget, uint32_t id);
* @param {widget_t*} widget 控件对象。
* @param {event_t*} e 事件。
*
* @return {ret_t} 返回RET_OK表示成功否则表示失败。
* @return {ret_t} 返回 RET_OK 表示成功,否则表示失败。
*/
ret_t widget_dispatch(widget_t* widget, event_t* e);
```

View File

@ -55,7 +55,7 @@ ret_t event_recorder_player_stop_play(void);
一般有两种方式启用输入事件记录与重放:
* 通过命令行参数启动记录或重放功能(目前没有提供示例)
* 通过命令行参数启动记录或重放功能(目前没有提供示例)
* 通过快捷键启动记录和重放功能。这种方法更为灵活,可以随时启用和停止,可以随时记录和播放。
@ -102,7 +102,7 @@ widget_on(wm, EVT_KEY_UP, on_key_record_play_events, wm);
* F7 键开始播放。
* F8 键停止播放。
## 4.已知问题
## 4. 已知问题
* 如果想重复播放记录的事件,确保记录事件时,回到初始界面后才停止记录。
* 目前平台原生输入法的输入事件没有记录。

View File

@ -274,7 +274,7 @@ ret_t locale_info_change(locale_info_t* locale_info, const char* language, const
design/default/styles/keyboard.xml
```
#### 21.如何处理Cannot find module 'glob'
#### 21. 如何处理Cannot find module 'glob'
一般来说,执行下面的命令即可:
@ -282,33 +282,30 @@ design/default/styles/keyboard.xml
npm install -g glob
```
在Linux/MacOS上有时仍然出现错误可以通过下面的命令设置NODE_PATH环境变量
在 Linux/MacOS 上,有时仍然出现错误,可以通过下面的命令,设置 NODE_PATH 环境变量:
```
export NODE_PATH="$(npm root -g)"
```
#### 22.如何处理 ImportError: No module named PIL
#### 22. 如何处理 ImportError: No module named PIL
这个需要安装Pillow模块(python),运行下面的命令可以安装:
这个需要安装 Pillow 模块 (python),运行下面的命令可以安装:
```
pip3 install Pillow
```
如果系统同时安装了python2可以加个alias。
如果系统同时安装了 python2可以加个 alias。
```
alias python=python3
```
#### 23. 如何让用户不可以调整desktop应用程序的窗口大小。
#### 23. 如何让用户不可以调整 desktop 应用程序的窗口大小。
在 awtk\_config.py 中定义宏 NATIVE\_WINDOW\_NOT\_RESIZABLE重新编译即可
```python
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DNATIVE_WINDOW_NOT_RESIZABLE=1 '
```