Android 输入法开发
android修改默认输入法

android修改默认输⼊法⽅案⼀:adb命令设置?⽅案2:系统配置;⽅案3:调⽤系统API接⼝设置---------------------------adb shell cmdadb rootadb remountadb push xx.apk /system/app---------------------------#Android键盘(AOSP) ~ 系统默认tin/.LatinIME#⾕歌拼⾳输⼊法com.google.android.inputmethod.pinyin/.PinyinIME#⾕歌Gboard输⼊法tin/tinIME#触宝输⼊法国际版com.cootek.smartinputv5/com.cootek.smartinput5.TouchPalIME#Go 输⼊法com.jb.emoji.gokeyboard/com.jb.gokeyboard.GoKeyboard#SwiftKey Keyboard 输⼊法com.touchtype.swiftkey/com.touchtype.KeyboardService#搜狗输⼊法:com.sohu.inputmethod.sogou/.SogouIME#微软必应输⼊法com.bingime.ime/.BingIme---------------------------#显⽰系统安装的输⼊法列表adb shell ime list -s#获取系统默认输⼊法adb shell settings get secure default_input_method#设置系统默认输⼊法adb shell settings put secure default_input_method com.touchtype.swiftkey/com.touchtype.KeyboardService⽰例:设置输⼊法为默认输⼊法adb shell settings put secure default_input_method com.cootek.smartinputv5/com.cootek.smartinput5.TouchPalIME adb shell settings put secure default_input_method com.jb.emoji.gokeyboard/com.jb.gokeyboard.GoKeyboard adb shell settings put secure default_input_method com.touchtype.swiftkey/com.touchtype.KeyboardServiceadb shell settings put secure default_input_method com.sohu.inputmethod.sogou/.SogouIMEadb shell settings put secure default_input_method com.bingime.ime/.BingIme其他:Swype输⼊法 --安装后点击桌⾯相应图标后启⽤该输⼊法,下载中⽂、⽇⽂等语⾔包。
如何进行Android应用的自定义键盘和输入法开发(八)

Android应用的自定义键盘和输入法开发是一个具有一定挑战性的任务,但也是一个充满创造力和乐趣的过程。
在这篇文章中,我们将探讨如何进行Android应用的自定义键盘和输入法开发,带您深入了解这个领域的知识和技术。
一、理解Android键盘和输入法在开始自定义键盘和输入法开发之前,我们首先需要了解Android键盘和输入法的工作原理。
Android中的键盘和输入法是基于InputMethodManager类实现的,通过监听用户的输入行为,将输入内容传递给应用程序。
二、键盘布局设计设计键盘布局是自定义键盘的第一步。
在Android中,键盘布局由一个xml文件定义。
在这个文件中,您可以指定键盘的外观和按键的功能。
您可以选择使用系统提供的键盘布局,也可以根据自己的需求定义一个新的键盘布局。
在设计键盘布局时,需要考虑以下几个方面:1. 键盘的大小和外观:您可以设置键盘的宽度和高度,以及键盘按键的样式和颜色。
2. 键盘按键的功能:您可以给每个按键指定一个功能,例如字母、数字、符号等。
三、输入法服务自定义键盘的下一步是创建一个输入法服务。
输入法服务是一个运行在后台的服务,负责接收用户输入,并将输入内容传递给应用程序。
在创建输入法服务时,您需要实现InputMethodService类,并覆盖其方法来处理用户的输入和键盘事件。
您还可以调用InputMethodManager类的方法来控制键盘的显示和隐藏。
四、输入法界面输入法界面是输入法的可见部分,它允许用户与键盘进行交互。
您可以自定义输入法界面的样式和布局,添加功能和特效。
在创建输入法界面时,您可以使用Android提供的一些UI组件,如EditText、TextView等。
您还可以使用自定义的布局文件来设计输入法界面,以满足您的需求。
五、实现基本功能在自定义键盘和输入法开发中,有一些基本的功能是需要实现的。
其中包括:1. 键盘切换:您可以实现多个键盘布局,并提供一个切换按钮,使用户能够在不同的键盘布局之间进行切换。
如何进行Android应用的自定义键盘和输入法开发(三)

如何进行Android应用的自定义键盘和输入法开发随着移动设备的普及,Android应用的开发需求也越来越多样化。
其中,自定义键盘和输入法的开发是一个越来越受欢迎的领域。
自定义键盘和输入法能够给用户带来更好的使用体验,满足个性化需求。
本文将介绍如何进行Android应用的自定义键盘和输入法开发。
1. 理解Android输入法框架在开始自定义键盘和输入法的开发之前,我们首先需要了解Android输入法框架。
Android输入法框架是一个强大的工具,它提供了丰富的API和接口,使我们能够定制化各种键盘和输入法。
我们可以通过扩展Android输入法框架来创建我们自己的键盘和输入法。
2. 创建自定义键盘布局自定义键盘的第一步是创建一个自定义布局。
我们可以使用XML文件来定义我们的键盘布局。
在布局中,我们可以包括各种按钮、文本框等。
通过合理的布局设计,我们可以实现键盘的各种功能,如数字键盘、符号键盘等。
此外,我们还可以为键盘添加样式和主题,使其更加美观和易于使用。
3. 处理键盘事件在自定义键盘中,键盘事件的处理非常重要。
我们需要在代码中定义各个按键的响应动作。
通过监听按键事件,我们可以实现各种功能,如文本输入、删除字符等。
在处理键盘事件时,我们可以使用Android提供的KeyEvent类来获取按键的信息,如按键码、按键状态等。
通过合理的事件处理,我们能够实现键盘的各种功能,提高用户的使用体验。
4. 创建自定义输入法除了自定义键盘,我们还可以创建自定义输入法。
自定义输入法是一种更加灵活和强大的方式,它可以提供更多个性化的输入功能。
创建自定义输入法的方法与创建自定义键盘类似,只是在布局和事件处理上有所区别。
我们可以在自定义输入法中加入更多的输入选项,如手写输入、语音输入等。
通过灵活运用Android输入法框架,我们能够创建功能丰富、个性化的输入法。
5. 优化用户体验在进行自定义键盘和输入法开发时,我们还需要考虑用户体验的优化。
Android 显示和隐藏输入法实现代码,android 输入法

Android 显示和隐藏输入法实现代码,android 输入法
复制代码代码如下: // 隐藏输入法 inputmethodmanager imm = (inputmethodmanager) getapplicationcontext().getsystemservice(context.input_method_service); // 显示或者隐藏输入法imm.togglesoftinput(0,
inputmethodmanager.hide_not_always); togglesoftinput 这个方法可以转换软件输入法在窗体中的显示状态。
如果输入法当前是显示状态,那么该方法设置输入法隐藏。
如果输入法当前是隐藏状态,则该方法设置输入法显示。
您可能感兴趣的文章:
1. android的文本和输入之创建输入法教程
2. android程序打开和对输入法的操作(打开/关闭)
3. android中activity启动默认不显示输入法解决方法
4. android中系统默认输入法设置的方法(输入法的显示和隐藏)
5. android输入法弹出时覆盖输入框问题的解决方法
6. android inputmethodmanager输入法简介
7. android监听输入法弹窗和关闭的实现方法
8. android 点击屏幕空白处收起输入法软键盘(手动打开)
9. android自定义view接收输入法输入的内容
10. android实现弹出输入法时顶部固定中间部分上移的效果。
Android开发之EditText属性详解

Android开发之EditText属性详解1、EditText输⼊的⽂字为密码形式的设置(1)通过.xml⾥设置:把该EditText设为:android:password="true" // 以”.”形式显⽰⽂本(2)在代码⾥设置:通过设置EditText的setTransformationMethod()⽅法来实现隐藏密码或这显⽰密码。
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//设置密码为不可见。
2、(1)EditText输⼊的⽂字为电话号码Android:phoneNumber=”true” //输⼊电话号码3、EditText字数限制的设置(1)在.xml中设置:android:maxLength=“50”(2)代码中设置:editText.setFilters(new InputFilter[]{newInputFilter.LengthFilter(100)});4、EditText设置字体android:typeface="monospace" //设置字型。
字形有:normal, sans, serif,monospace5、EditText是否可编辑Android:editable // 是否可编辑6、在EditText中软键盘的调起、关闭(1)EditText有焦点(focusable为true)阻⽌输⼊法弹出editText=(EditText)findViewById(R.id.txtBody);editText.setOnTouchListener(new OnTouchListener(){public boolean onTouch(View v, MotionEvent event){editText.setInputType(InputType.TYPE_NULL); //关闭软键盘return false;}});(2)当EidtText⽆焦点(focusable=false)时阻⽌输⼊法弹出InputMethodManager imm =(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(editText.getWindowToken(),0);(3)调⽤数字键盘并设置输⼊类型和键盘为英⽂etNumber.setInputType(InputType.TYPE_CLASS_NUMBER); //调⽤数字键盘rlEditText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);//设置输⼊类型和键盘为英⽂或者:android:inputType="textUri|textMultiLine"(4)android:focusable="false"//键盘永远不会弹出<activity android:name=".AddLinkman"android:windowSoftInputMode="adjustUnspecified|stateHidden"/>//不⾃动弹出键盘//关闭键盘(⽐如输⼊结束后执⾏) InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etEditText.getWindowToken(), 0);//⾃动弹出键盘((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS); etEditText.requestFocus();//让EditText获得焦点,但是获得焦点并不会⾃动弹出键盘7、android:layout_gravity和android:gravity的区别(1)android:layout_gravity是本元素对⽗元素的重⼒⽅向。
如何进行Android应用的自定义键盘和输入法开发(九)

Android应用的自定义键盘和输入法开发是一项非常有挑战性但也非常有意义的工作。
本文将探讨如何进行这一开发,并提供一些有用的技巧和建议。
一、了解Android键盘和输入法基础知识在开始自定义键盘和输入法开发之前,我们需要对Android键盘和输入法的基础知识有一定的了解。
首先,Android的键盘是由系统提供的默认键盘,而输入法则是键盘的一种特殊类型,能够处理用户输入并将其显示在应用程序中的文本框中。
二、自定义键盘的开发1. 创建自定义键盘布局要创建自定义键盘,首先需要创建一个XML布局文件来定义键盘的外观和行为。
在布局文件中,你可以添加按钮、文本框和其他界面元素。
此外,你还可以指定键盘的大小、颜色和字体等属性。
确保布局文件与你的应用程序的样式和主题相匹配,以提供一致的用户体验。
2. 处理键盘事件在自定义键盘的布局文件中,你可以为各个按钮添加相应的点击事件处理程序。
这样,当用户点击某个按钮时,你就可以执行相应的操作。
例如,你可以在点击按钮时将相应的字符添加到文本框中,或者执行其他自定义的操作。
在处理键盘事件时,记住要处理各种不同的按键,包括字母、数字和特殊字符等。
三、自定义输入法的开发1. 创建自定义输入法服务要创建自定义输入法,首先需要创建一个扩展InputMethodService的类。
这个类将负责处理用户的输入和显示相关的界面。
在这个类中,你可以重写各种方法来处理输入法的生命周期事件。
例如,你可以重写onCreateInputView方法来创建输入法的视图,以供用户输入文本。
2. 定义输入法视图在自定义输入法服务类中,你需要定义输入法视图。
输入法视图是输入法界面的核心部分,它负责显示键盘、文本框和其他界面元素。
你可以使用XML布局文件来定义输入法视图的外观和布局。
确保布局文件与你的应用程序的样式和主题相匹配,以提供一致的用户体验。
3. 处理输入法事件在自定义输入法服务类中,你还需要处理输入法事件。
Android制作漂亮自适布局键盘的方法,android 软键盘顶布局

Android制作漂亮自适布局键盘的方法,android 软键盘顶布局最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路。
这里最上面的titlebar高度固定,下面输入的金额高度也固定(当然也可以自适应),主要是中间的数字键盘,高度和宽度需要自适应。
先来张效果图:最常见的解决方案是用线性布局,自适应当然是按比例,但布局中无%的概念,那就要用到layout_weight 了,该属性的作用是决定控件在其父布局中的显示权重(具体概念就不多说了)。
这里用一个linearlayout 将数字键盘与下面的支付类型进行包装,然后用一个大linearlayout 包住所有的数字键盘如下图,它与下面支付类型比例是6:1,这样数字键盘就会按屏幕大小高度与宽度进行变化,每一行数字键盘用一个linearlayout ,里面包3个数字显示button 按钮。
设置每行的linearlayout 的layout_height=0dp ,layout_weight=1,具体设置如下:[Java] 查看源文件 复制代码?1 2 3 4 5 6 7 8 <style name="layout_input_amount_style"><item name="android:layout_width">match_parent</item><item name="android:layout_height">0dp</item><item name="android:layout_weight">1</item><item name="android:layout_marginbottom">1dp</item><item name="android:gravity">center</item><item name="android:orientation">horizontal</item></style>这样就保证了上下自适应布局。
Android开发中如何实现点击编辑框以外的地方关闭输入法

Android 开发中如何实现点击编辑框以外的地方关闭输入法Android 开发中如何实现点击编辑框以外的地方关闭输入法。
[Java] 查看源文件 复制代码?01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 //Activity 中的方法,重写就行@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0); }}return super.dispatchTouchEvent(ev);}// 必不可少,否则所有的组件都不会有TouchEvent 了if (getWindow().superDispatchTouchEvent(ev)) {return true;}return onTouchEvent(ev);}public boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] leftTop = { 0, 0 };//获取输入框当前的location 位置v.getLocationInWindow(leftTop);int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 点击的是输入框区域,保留点击EditText 的事件return false;} else {return true;}}return false;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[Android] 输入法的开发此博文包含图片(2011-09-01 18:51:38)转载▼标签:杂谈分类:Android从SDK 1.5版本以后,Android就开放它的IMF(Input Method Framework),让我们能够开发自己的输入法。
而开发输入法最好的参考就是Android自带的Sample-SoftKeyboard,虽然这个例子仅包含英文和数字输入,但是它本身还算完整和清楚,对我们开始Android开发实战有很大帮助。
一、IMF简介一个IMF结构中包含三个主要的部分:input method manager:管理各部分的交互。
它是一个客户端API,存在于各个应用程序的context中,用来沟通管理所有进程间交互的全局系统服务。
input method(IME):实现一个允许用户生成文本的独立交互模块。
系统绑定一个当前的输入法。
使其创建和生成,决定输入法何时隐藏或者显示它的UI。
同一时间只能有一个IME 运行。
client application:通过输入法管理器控制输入焦点和IME的状态。
一次只能有一个客户端使用IME。
1、InputManager由UI控件(View,TextView,EditText等)调用,用来操作输入法。
比如,打开,关闭,切换输入法等。
它是整个输入法框架(IMF)结构的核心API,处理应用程序和当前输入法的交互。
可以通过Context.getSystemService()来获取一个InputMethodManager的实例。
在开发过程中,最基础最重要的就是养成阅读API的习惯。
优秀的程序员要养成把自己关在小黑屋里,断绝与外界的联网和联系,仅仅靠自己电脑中的开发环境和API文档,以及漂亮女仆送来的每天三顿饭,写出优秀的程序。
这个在武侠小说中叫闭关,在软件开发中叫Clean Room,哈哈。
Android的API文档在:%SDK_ROOM%/docs/reference/index.html,InputManager类的位置:%SDK_ROOM%/docs/reference/android/view/inputmethod/InputMethodManager.html 由于,该类跟本次要讲的Sample关系不大,这里就不详细分析,请各位自行阅读API doc 吧。
2、InputMethodService包括输入法内部逻辑,键盘布局,选词等,最终把选出的字符通过commitText提交出来。
实现输入法的基础就是名为InputMethodService的类,比如你要实现一个谷歌输入法,就是要extends本类。
我们接下来要学习的SoftKeyboard Sample也是extends本类。
InputMethodService类的位置在:%SDK_ROOM%/docs/reference /android/inputmethodservice/InputMethodService.htmlInputMethodService是InputMethod的一个完整实现,你可以再在其基础上扩展和定制。
它的主要方法如下:onInitializeInterface() 顾名思义,它在初始化界面的时候被调用,而一般是由于配置文件的更改导致该函数的执行onBinndInput() 它在另外的客户端和该输入法连接时调用onStartInput() 非常重要的一个回调,它在编辑框中用户已经开始输入的时候调用。
比如,当点击一个输入框,我们需要根据这个输入框的信息,设置输入法的一些特性,这个在Sample中很有体会。
onCreateInputView() 返回一个层次性的输入视图,而且只是在这个视图第一次显示的时候被调用onCreateCandidatesView() 同onCreateInputView(),只不过创建的是候选框的视图。
onCreateExtractTextView() 比较特殊,是在全屏模式下的一个视图。
onStartInputView() 在输入视图被显示并且在一个新的输入框中输入已经开始的时候调用。
基本上输入法的定制,都是围绕在这个类来实现的,它主要提供的是一个基本的用户界面框架(包括输入视图,候选词视图和全屏模式),但是这些都是要实现者自己去定制的。
这里的实现是让所有的元素都放置在了一个单一的由InputMethodService来管理的窗口中。
它提供了很多的回调API,需要我们自己去实现。
一些默认的设置包括:软键盘输入视图,它通常都是被放置在屏幕的下方。
候选词视图,它通常是放置在输入视图的上面。
当我们输入的时候,需要改变应用程序的界面来适应这些视图的放置规则。
比如在Android上面输入,编辑框会自动变形腾出一个软键盘的位置来。
两个非常重要的视图:1. 软输入视图。
是与用户交互的主要发生地:按键,画图或者其他的方式。
通常的实现就是简单的用一个视图来处理所有的工作,并且在调用onCreateInputView()的时候返回一个新的实例。
通过调用系统的onEvaluateInputViewShow()来测试是否需要显示输入视图,它是系统根据当前的上下文环境来实现的。
当输入法状态改变的时候,需要调用updateInputViewShown()来重新估计一下。
2. 候选词视图。
当用户输入一些字符之后,输入法可能需要提供给用户一些可用的候选词的列表。
这个视图的管理和输入视图不大一样,因为这个视图是非常的短暂的,它只是在有候选词的时候才会被显示。
可以用setCandidatesViewShow()来设置是否需要显示这个视图。
正是因为这个显示的频繁性,所以它一般不会被销毁,而且不会改变当前应用程序的视图。
最后,关于文本的产生,这是一个IME的最终目的。
它通过InputConnection来链接IME 和应用程序的:能够直接产生想要的按键信息,甚至直接在候选和提交的文本中编辑。
当用户在不同的输入目标之间切换的时候,IME会不断的调用onFinishInput() 和onStartInput()。
在这两个函数中,需要反复做的就是复位状态,并且应对新的输入框的信息。
以上是一个输入法的最基本的介绍,下面将根据Sample中的SoftKeyboard来说明这些问题。
二、创建Eclipse工程这里使用最新版本的Android SDK 2.3.3下的SoftKeyboard Sample来创建工程,其实,从1.5版本,该Sample就已经存在了。
同时,由于SoftKeyboard会使人误解为KeyBoard 的子类,这里特别改名为InputMethodServiceSample,更符合其功能和特性。
[Android] <wbr>输入法的开发点击Finish,完成项目的创建,可以看到项目工程结构如下:[Android] <wbr>输入法的开发在Android SDK 2.3.3模拟器上运行本Sample,需要在Setting中选择使用本Sample,需要在Language&keyboard中选中本Sample的名称。
[Android] <wbr>输入法的开发当尝试选中Sample Soft Keyboard时,Android会出现安全提示。
IME的确要选择自己信任的,因为它可以收集和记录所有你的输入,这个特性如果被有心人利用会很恐怖。
选中Sample Soft Keyboard作为我们的输入法之后,进入需要输入法的地方,这里以短信界面作为范例,在输入框中长按,会出现“编辑文本”选单,点击“输入法”即可进入当前输入界面的输入法选择框。
就可以使用输入法切换到本输入法看到它的keyboard。
[Android] <wbr>输入法的开发之后就可以看到Soft keyboard键盘如下:[Android] <wbr>输入法的开发三、配置和资源文件解析除去源代码将在后文统一分析之外,这里介绍下配置和资源文件。
1. AndroidMainifest.xml每个Android应用都会有的配置描述文件。
在这里,Sample把自己声明成了服务,而且绑定在了输入法之上。
它的intent-filter是直接用的InputMethod接口,这也是所有的输入法的接口。
2. res目录放置resource,即资源文件,里面蛮多东西的,具体如下。
(1) drawable目录,放置的是图标文件。
(2) values目录,包含strings.xml以及一些自定义的类型和值的xml文件。
strings.xml―ime_name 定义了该输入法的名字―word_separators 词的分隔符,即输入过程中可能用来表示一个词输入完成的符号,比如空格,标点等等)―label_xx_key 为软键盘定义确认键的标签。
在后面代码解析中可以看到,程序会根据输入框的信息来设置EnterKey的图标或者标签。
如:在一个网址上面输入,就会显示一个搜索的图标,而在编辑短信时,如果在收信人写,那么EnterKey就是Next标签,用来直接跳到短信正文部分。
dimens.xml,定义软键盘的尺寸信息,包括键高(key_height),候选词字体的高度(candidate_font_height),候选词垂直间隙(candidate_vertical_padding)。
color.xml,定义候选词的背景颜色,比如正常(candidate_normal),推荐(candidate_recommended),背景(candidate_background)和其它(candidate_other)等颜色。
(3) layout目录,保存布局配置文件。
这里只有一个配置文件:input.xml,它定义的是输入视图的信息,包括id(android:id="@+id/keyboard"),放置在屏幕下方(android:layout_alignParentBottom="true"),水平最大填充(android:layout_width="match_parent"),垂直包含子内容(android:layout_height="wrap_content")。
(4) xml目录,文件如下:method.xml,为搜索管理提供配置信息。
qwerty.xml,英文字符的全键盘布局文件。
定义很直观,很容易就可以看懂。
symbols_shift.xml和symbols.xml,是标点字符的全键盘布局文件。
四、源代码解析(一)概述从InputMethodServiceSample项目可以看出实现一个输入法至少需要CandidateView, LatinKeyboard, LatinKeyboardView,SoftKeyboard这四个文件:CandidateView负责显示软键盘上面的那个候选区域。