Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
151f6610
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
151f6610
编写于
2月 21, 2023
作者:
H
Hollokin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修正开发指南
Signed-off-by:
N
Hollokin
<
taoyuxin2@huawei.com
>
上级
cca12cef
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
34 deletion
+32
-34
zh-cn/application-dev/application-models/inputmethodextentionability.md
...ion-dev/application-models/inputmethodextentionability.md
+32
-34
未找到文件。
zh-cn/application-dev/application-models/inputmethodextentionability.md
浏览文件 @
151f6610
...
...
@@ -19,7 +19,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
> 如果服务已创建,再次启动该InputMethodExtensionAbility不会触发onCreate()回调。
-
**onDestroy**
当不再使用服务且准备将
其销毁该实例
时,触发该回调。开发者可以在该回调中清理资源,如注销监听等。
当不再使用服务且准备将
该实例销毁
时,触发该回调。开发者可以在该回调中清理资源,如注销监听等。
## 开发步骤
...
...
@@ -38,13 +38,12 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
```
/src/main/
├── ets/
InputMethodExtA
bility
├── ets/
inputmethodexta
bility
│ └──model/KeyboardController.ts # 显示键盘
│ └──InputMethodService.ts # 自定义类继承InputMethodExtensionAbility并加上需要的生命周期回调
│ └──pages
│ └──InputMethodExtAbility
│ └── Index.ets # 绘制键盘,添加输入删除功能
│ └── KeyboardKeyData.ts # 键盘属性定义
│ └── Index.ets # 绘制键盘,添加输入删除功能
│ └── KeyboardKeyData.ts # 键盘属性定义
├── resources/base/profile/main_pages.json
```
...
...
@@ -68,7 +67,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
onDestroy
()
{
console
.
log
(
"
onDestroy.
"
);
this
.
context
.
destroy
()
this
.
context
.
destroy
()
;
}
}
```
...
...
@@ -76,16 +75,16 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
2.
KeyboardController.ts文件。
```
ts
import
inputMethodEngine
from
'
@ohos.inputMethodEngine
'
import
display
from
'
@ohos.display
'
import
windowManager
from
'
@ohos.window
'
import
inputMethodEngine
from
'
@ohos.inputMethodEngine
'
;
import
display
from
'
@ohos.display
'
;
import
windowManager
from
'
@ohos.window
'
;
// 调用输入法框架的getInputMethodAbility方法获取实例,并由此实例调用输入法框架功能接口
globalThis
.
inputAbility
=
inputMethodEngine
.
getInputMethodAbility
();
export
class
KeyboardController
{
mContext
// 保存InputMethodExtensionAbility中的context属性
WINDOW_TYPE_INPUT_METHOD_FLOAT
=
2105
// 定义窗口类型,2105代表输入法窗口类型,用于创建输入法应用窗口
mContext
;
// 保存InputMethodExtensionAbility中的context属性
WINDOW_TYPE_INPUT_METHOD_FLOAT
=
2105
;
// 定义窗口类型,2105代表输入法窗口类型,用于创建输入法应用窗口
windowName
=
'
inputApp
'
;
private
windowHeight
:
number
=
0
;
private
windowWidth
:
number
=
0
;
...
...
@@ -105,32 +104,31 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
public
onDestroy
():
void
// 应用生命周期销毁
{
this
.
unRegisterListener
();
// 注销事件监听
var
win
=
windowManager
.
findWindow
(
this
.
windowName
)
win
.
destroyWindow
()
// 销毁窗口
let
win
=
windowManager
.
findWindow
(
this
.
windowName
);
win
.
destroyWindow
()
;
// 销毁窗口
this
.
mContext
.
terminateSelf
();
// 销毁InputMethodExtensionAbility服务
}
private
initWindow
():
void
// 初始化窗口
{
display
.
getDefaultDisplay
().
then
(
dis
=>
{
var
dWidth
=
dis
.
width
;
var
dHeight
=
dis
.
height
;
var
keyHeightRate
=
0.47
;
var
keyHeight
=
dHeight
*
keyHeightRate
;
this
.
windowWidth
=
dWidth
;
this
.
windowHeight
=
keyHeight
;
this
.
nonBarPosition
=
dHeight
-
keyHeight
let
dis
=
display
.
getDefaultDisplaySync
();
let
dWidth
=
dis
.
width
;
let
dHeight
=
dis
.
height
;
let
keyHeightRate
=
0.47
;
let
keyHeight
=
dHeight
*
keyHeightRate
;
this
.
windowWidth
=
dWidth
;
this
.
windowHeight
=
keyHeight
;
this
.
nonBarPosition
=
dHeight
-
keyHeight
;
var
config
=
{
name
:
this
.
windowName
,
windowType
:
this
.
WINDOW_TYPE_INPUT_METHOD_FLOAT
,
ctx
:
this
.
mContext
}
windowManager
.
createWindow
(
config
).
then
((
win
)
=>
{
// 根据窗口类型创建窗口
win
.
resize
(
dWidth
,
keyHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
setUIContent
(
'
pages/InputMethodExtAbility/Index
'
).
then
(()
=>
{
});
let
config
=
{
name
:
this
.
windowName
,
windowType
:
this
.
WINDOW_TYPE_INPUT_METHOD_FLOAT
,
ctx
:
this
.
mContext
}
windowManager
.
createWindow
(
config
).
then
((
win
)
=>
{
// 根据窗口类型创建窗口
win
.
resize
(
dWidth
,
keyHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
setUIContent
(
'
pages/InputMethodExtAbility/Index
'
).
then
(()
=>
{
});
});
});
...
...
@@ -157,7 +155,7 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
globalThis
.
keyboardController
=
kbController
;
})
globalThis
.
inputAbility
.
on
(
'
inputStop
'
,
(
imeId
)
=>
{
if
(
imeId
==
"
com.example.kikainput/InputDemoService
"
)
{
if
(
imeId
==
"
包名/Ability名
"
)
{
this
.
onDestroy
();
}
});
...
...
@@ -166,12 +164,12 @@ InputMethodExtensionAbility通过[InputMethodExtensionContext](../reference/apis
private
unRegisterListener
():
void
{
globalThis
.
inputAbility
.
off
(
'
inputStart
'
);
globalThis
.
inputAbility
.
off
(
'
inputStop
'
);
globalThis
.
inputAbility
.
off
(
'
inputStop
'
,
()
=>
{}
);
globalThis
.
inputAbility
.
off
(
'
keyboardShow
'
);
}
private
showHighWindow
()
{
var
win
=
windowManager
.
findWindow
(
this
.
windowName
)
let
win
=
windowManager
.
findWindow
(
this
.
windowName
)
win
.
resize
(
this
.
windowWidth
,
this
.
windowHeight
).
then
(()
=>
{
win
.
moveWindowTo
(
0
,
this
.
nonBarPosition
).
then
(()
=>
{
win
.
showWindow
().
then
(()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录