- 浏览: 2147255 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
android 制作输入法
效果如图:
在res目录下新建文件夹xml,在xml文件夹下新建一个文件input_method.xml
然后有三个类分别是:
ImfService.java
CandidateView.java
KeyboardView.java
代码如下:
ImfService.java
CandidateView.java
KeyboardView.java
最后在AndroidManifest.xml配置文件中添加上这个service
配置好运行就可以了,然后在输入法配置那里选择上刚添加的输入法,然后在文本框输入的时候就可以选择自己添加的输入来输入内容了。
效果如图:
在res目录下新建文件夹xml,在xml文件夹下新建一个文件input_method.xml
<?xml version="1.0" encoding="utf-8"?> <input-method xmlns:android="http://schemas.android.com/apk/res/android" />
然后有三个类分别是:
ImfService.java
CandidateView.java
KeyboardView.java
代码如下:
ImfService.java
import android.inputmethodservice.InputMethodService; import android.util.Log; import android.view.View; /** * * <br/> * Title: ImfService.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-2-20 下午5:07:34<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class ImfService extends InputMethodService { public void onInitializeInterface() { Log.i("*********", "自定义输入法onInitializeInterface"); } @Override public View onCreateInputView() { Log.i("*********", "自定义输入法onCreateInputView"); KeyboardView mkeyView = new KeyboardView(this); return mkeyView; } @Override public View onCreateExtractTextView() { Log.i("*********", "自定义输入法onCreateExtractTextView"); return super.onCreateExtractTextView(); } @Override public View onCreateCandidatesView() { Log.i("*********", "自定义输入法onCreateCandidatesView"); CandidateView mCandView = new CandidateView(this); return mCandView; } }
CandidateView.java
import android.content.Context; import android.graphics.Color; import android.inputmethodservice.InputMethodService; import android.view.Gravity; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; /** * * <br/> * Title: CandidateView.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-2-21 上午10:27:28<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class CandidateView extends LinearLayout { private InputMethodService service; public CandidateView(Context context) { super(context); service = (InputMethodService) context; setBackgroundColor(Color.GRAY); setOrientation(LinearLayout.HORIZONTAL); Button btnLeft = new Button(context); btnLeft.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btnLeft.setText("<"); addView(btnLeft); LinearLayout layout = new LinearLayout(context); layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 1)); TextView tv = new TextView(context); tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT)); tv.setTextColor(Color.BLACK); tv.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL); tv.setText("测试内容啦..."); tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { pickSuggestionManually(1); } }); layout.addView(tv); addView(layout); Button btnRight = new Button(context); btnRight.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btnRight.setText(">"); addView(btnRight); } public void pickSuggestionManually(int mSelectedIndex) { service.getCurrentInputConnection().commitText("A", 0); // 往输入框输出内容 service.setCandidatesViewShown(false); // 隐藏 CandidatesView } }
KeyboardView.java
import android.app.Service; import android.content.Context; import android.inputmethodservice.InputMethodService; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; /** * * <br/> * Title: KeyboardView.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-2-21 上午10:29:12<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class KeyboardView extends LinearLayout { private InputMethodService service; public KeyboardView(Context context) { super(context); service = (InputMethodService) context; setOrientation(LinearLayout.HORIZONTAL); Button btnA = new Button(context); btnA.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btnA.setText("A"); btnA.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { service.setCandidatesViewShown(true); } }); addView(btnA); Button btnB = new Button(context); btnB.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btnB.setText("B"); btnB.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { service.setCandidatesViewShown(true); } }); addView(btnB); Button btnC = new Button(context); btnC.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btnC.setText("C"); btnC.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { service.getCurrentInputConnection().commitText("C", 0); // 往输入框输出内容 } }); addView(btnC); service.setCandidatesViewShown(false); } }
最后在AndroidManifest.xml配置文件中添加上这个service
<service android:name="com.xxx.core.server.ImfService" android:label="丸子输入法" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/input_method" /> </service>
配置好运行就可以了,然后在输入法配置那里选择上刚添加的输入法,然后在文本框输入的时候就可以选择自己添加的输入来输入内容了。
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 570本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1031颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 928从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1040Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 906Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 769前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 860监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 735在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 831最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1225##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1000当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 679setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1406问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 683底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1666点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1294import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2202TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1449一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 797Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 889最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
请注意,皮肤基于官方版百度输入法制作,请勿在华为/一加/小米等定制版下使用。 百度输入法 / Android安卓版 ○ 安装方式 打开任一网盘链接下载皮肤文件,再使用文件管理器将皮肤移动至 baidu/ime/skins 之后到本地...
一款安卓输入法源码一款安卓输入法源码一款安卓输入法源码一款安卓输入法源码一款安卓输入法源码
android 虚拟键盘的实现(Virtual Keyboard)
Google Inc.版权所有2010-2021。 Mozc是日语输入法编辑器(IME),设计用于多平台,例如Android OS,Apple OS X,Chromium OS,GNU / Linux和Microsoft ...制作说明 :Android库和Linux桌面构建。 :OS X构建。 :Win
有的手机第一次打开AIDE时会提示新建一个android项目,可以点不。如上图,点击电脑图标后,会弹出出AIDE的工作区,如下图: 默认工作区弹出的内容是AIDE的项目文件管理器,值得一提是AIDE的项目文件管理器的默认...
本文分析了Android实现换肤的两种思路。分享给大家供大家参考,具体如下: 这里来了解换肤实现及不同方案的差异和使用场合。 一、从功能上划分 1) 软件内置多个皮肤,用户不能修改; 2) 官方提供皮肤下载,用户使用...
在开源精神的前提下,Collaction 小队花了一点时间制作此App。让未能安装字体的朋友也能透过此App 查询字体的参考写法,解决因为「电脑输入法」而令学生/ 家长/ 教师混淆的问题。 只需在App 内用惯常的输入法输入中...
自定义安全软键盘,可以在项目中使用,实用易学好修改。本人已在项目中使用,可以自定义修改样式。(必须50字说明)
android application that can scan qrcode calling cards and save it to the contacts list.It can also generate qrcode based on user's information. 名称:QrCard (二维码名片),一个可以制作个人二维码名片...
微信有一个隐藏功能,在微信的聊天输入框输入一个图片路径,如: "/storage/emulated/0/Android/data/com.qiao.gifin/cache/a.gif",微信会自动读取该图片并发送,所以本输入法输入的都是类似的图片路径,以此来达到...
其他的一些输入法什么的,由于此类软件经常有更新,所以未集成,给大家较高的自由度去安装吧。 6.修改开机第一屏图片(貌似蛮好看的,嘻嘻)。开机动画替换比较简单,本次固件没做修改,大家可自行修改。 7.此次固件...
又比如不习惯手机输入法想用电脑打字然后想粘贴到手机上发短信甚至邮件等等……或许你已经知道“GoogleSendToPhone”这个小插件但那只支持 Chrome 搭配 Android 手机而且需要网络支持;或许各种手机助手之类的软件...
1.本固件基于it168明大2.37,目前认为最稳定的固件修改制作而成。 2.集成智能拨号,通讯录顺序排列,短信气泡(可添加联系人,会话界面样式可调)+完美桌面弹框显示,归属地显示。 3.电量图标精确1%。 4.精简一些...