`
Linux小红花
  • 浏览: 14102 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Android Sample : SoftKeyboard 分析

阅读更多

Android SDK中提供软键盘输入法的示例,希望通过对它的分析,可以掌握如何从零开始实现输入法。以下内容拟采用UML中Sequence Diagram(时序图)的形式,剖析其处理流程。

init
需要特别说明的是,由于SoftKeyboard这个名称,会使人误解其是KeyBoard的子类,因此特意重构名称为SampleInputMethodService。
万事万物都要回答这样一个问题:从哪里来到哪里去?针对输入法而言,这个问题就是:输入法如何初始化。输入法在Android中的本质就是一个Service,假设用户刚刚启动Android,用户移动焦点首次进入文本编辑框时,Android便会通知Service开始进行初始化工作。于是便有了如图中的一系列动作。
追根溯源,onCreate方法继承至Service类,其意义和其他Service的是一样的。示例在这里,做了一些非UI方面的初始化,即字符串变量词汇分隔符的初始化。
接下来执行onInitializeInterface,这里是进行UI初始化的地方,创建以后和配置修改以后,都会调用这个方法。示例在这里对Keyboard进行了初始化,从XML文件中读取软键盘信息,封装进Keyboard对象。
第三个执行的就是onStartInput方法,在这里,我们被绑定到了客户端,接收所有关于编辑对象的详细信息。
第四个执行的方法是onCreateInputView,在用户输入的区域要显示时,这个方法由框架调用,输入法首次显示时,或者配置信息改变时,该方法就会被执行。在该方法中,对inputview进行初始化:读取布局文件信息,设置onKeyboardActionListener,并初始设置keyboard。
第五个方法是onCreateCandidatesView,在要显示候选词汇的视图时,由框架调用。和onCreateInputView类似。在这个方式中,对candidateview 进行初始化。
第六个方法,也是最后一个方法,即onStartInputView,正是在这个方法中,将inputview和当前keyboard重新关联起来。
在上面的六个方法中,onCreateInputView和onCreateCandidatesView两个方法只有在初始化时才会执行一次,除非有配置信息发生改变。那么究竟什么是配置信息发生改变呢?在看InputMethodService的API文档时,可以看到有一个方法onConfigurationChanged,根据文档解释,这个方法主要负责配置更改的情况。在示例中,其没有override这个方法,但是在android源码包中的PinyinIME中,有使用这个方法。

 

更多精彩linux视频教程,尽在51CTO学院:
wKioL1PE_n3z629yAACXIHScsJM092.jpg
分享到:
评论

相关推荐

    安卓输入法Softkeyboard源码移动开发- Andrord

    4. 输入法切换:Android系统支持多输入法切换,用户可以在设置中选择当前活动的输入法。`SoftKeyboard`通过`InputMethodManager`进行注册和管理。 三、SoftKeyboard学习价值 1. 输入法服务理解:通过分析`...

    Android开发实例详解之IMF(Android_SDK_Sample—SoftKeyboard).pdf

    ### Android开发实例详解之IMF (Android_SDK_Sample—SoftKeyboard) #### 一、IMF简介 在深入了解SoftKeyboard项目之前,我们先简要介绍一下IMF(Input Method Framework)。随着Android SDK 1.5版本的发布,...

    Android-L SoftKeyboard

    《Android-L SoftKeyboard详解》 在Android开发领域,SoftKeyboard是一个重要的组成部分,它是指系统或应用内提供的虚拟键盘。在Android-L(即Android 5.0)版本中,Google提供了SoftKeyboard的示例代码,帮助...

    Android-development-sample---IMF.rar_Android softKeyboard_androi

    【标题】"Android-development-sample---IMF.rar"与"Android softKeyboard_androi"结合,意味着这是一个关于Android开发的示例项目,特别关注于实现输入法框架(Input Method Framework,简称IMF),并且涉及到软...

    SoftKeyboard

    【标题】"SoftKeyboard...总的来说,通过分析和学习SoftKeyboard项目,开发者不仅可以掌握自定义键盘的基本实现,还能深入理解Android系统的输入机制,这对于开发复杂的Android应用或优化用户交互体验是非常有帮助的。

    SoftKeyboard (含註解)

    4. 绑定与切换:Android系统允许用户选择和切换不同的输入法,开发者可以将自己的SoftKeyboard集成到系统中,供用户选择使用。 三、SoftKeyboard的自定义 1. 修改键盘布局:通过修改res/xml/ime.xml文件,可以定制...

    安卓输入法Softkeyboard源码

    在Android操作系统中,输入法是用户与设备交互的重要环节,而SoftKeyboard作为Android系统自带的示例输入法,对于开发者来说,是理解和定制自定义输入法的绝佳参考。本文将深入探讨SoftKeyboard源码,揭示其工作原理...

    android 输入法 softkeyboard

    在Android系统中,SoftKeyboard是用于开发自定义输入法的关键组件。这个官方的输入法demo为开发者提供了一个学习和理解如何构建自己的输入法应用的起点。让我们深入探讨一下这个软键盘实现背后的细节。 首先,我们...

    Android SoftKeyboard Listener Demo

    在Android开发中,软键盘(SoftKeyboard)的监听是一个常见的需求,特别是在处理输入框与键盘交互、页面布局自适应等方面。"Android SoftKeyboard Listener Demo"是一个示例项目,旨在展示如何在Android应用中监听软...

    android-migemo-ime:适用于 Android 的 Migemize SoftKeyboard

    Android 软键盘,即 SoftKeyboard,是 Android 系统中用于输入文本的一种组件。开发者可以通过自定义软键盘来实现特定的输入需求,如特殊字符、特定语言或输入方式。在这个项目中,"android-migemo-ime" 将 Migemo ...

    Keyboard-css:使用HTML和CSS构建的键盘UI以及来自语义UI的调整

    【文件名分析】 "Keyboard-css-main" 可能是指项目的主要源代码文件或者文件夹,通常包含项目的HTML、CSS以及其他必要的资源文件。在这个例子中,它可能是项目的主目录,包含了实现键盘UI的所有核心代码和文件。 **...

    softkeyboard(Qt)

    7. **Qt的多平台支持**: Qt的一个重要特性是其跨平台性,所以这个软键盘不仅可以运行在Windows、Linux、macOS等桌面系统,还可以适应Android和iOS等移动平台。 8. **QApplication::setOverrideCursor**: 当用户在软...

    softkeyboard

    标题“softkeyboard”所指的是一个由知名人士开发的软件键盘...通过分析和学习这个程序,开发者可以了解到软键盘的设计原理、实现方法以及如何优化输入体验,这对于提升自己的编程技能和理解人机交互设计有极大的帮助。

    android 自定义软键盘or系统键盘源码

    <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="33%p" android:keyHeight="50dp"> <!-- 键盘上的按键定义 --> <Key android:codes="49" android:keyLabel="1" /> ...

    Android参考源码-调用Android中的软键盘.zip

    在Android开发中,调用软键盘是常见的操作,特别是在用户需要输入信息的场景下,如登录、注册、编辑文本等。这份"Android参考源码-调用Android中的软键盘.zip"资源提供了一种实现方式,它包含了一个示例项目,可以...

    Android监听输入法软键盘按键demo

    通过重写`Activity`的`onWindowFocusChanged`方法,判断焦点变化是否与软键盘有关,然后结合`InputMethodManager`的`getInputMethodState()`等方法,分析按键事件。 ```java @Override public void ...

    android输入法原理分析

    【Android 输入法原理分析】 Android 输入法的实现原理主要基于Input Method Framework (IMF)框架,该框架将输入法的实现分为三个核心模块:客户端控件、输入法服务(IMMS)和输入法应用(IME)。理解这些模块及其...

    cordova-plugin-softkeyboard-android:修复了org.apache.cordova.plugin.softkeyboard插件的派生

    SoftKeyboard插件固定的分叉在文件org.apache.cordova.plugin.softkeyboard.SoftKeyboard.java中,将所有“ webView”引用更改为“ webView.getView()”,这是由cordova lib中的更改强制执行的。 CordovaWebView...

    softKeyBoard v1.0.0.rar

    【标题】"softKeyBoard v1.0.0.rar" 是一个基于Qt框架的虚拟键盘应用的源码压缩包,版本号为1.0.0。这个项目旨在提供一个能够替代物理键盘的软件解决方案,特别适合于触摸屏设备或者需要在无物理键盘环境下输入文字...

Global site tag (gtag.js) - Google Analytics