当前位置: 首页 > news >正文

佘山做网站公司南昌seo网络

佘山做网站公司,南昌seo网络,免费的个人主页空间,卓训网是个什么网站本文演示用Android Studio写一个最简单的输入法。界面和交互都很简陋#xff0c;只为剔肉留骨#xff0c;彰显写一个Android输入法的要点。 1、打开Android Studio创建项目#xff0c;该项目和普通APP的不同之处在于它不需要添加任何Activity#xff1a;我给该输入法命名为… 本文演示用Android Studio写一个最简单的输入法。界面和交互都很简陋只为剔肉留骨彰显写一个Android输入法的要点。 1、打开Android Studio创建项目该项目和普通APP的不同之处在于它不需要添加任何Activity  我给该输入法命名为AndroidXXIME。 2、修改manifest文件如前文《Android下创建一个输入法》中所说输入法是一个包含IME service的安卓应用程序首先应该在程序的manifest中声明service。我的manifest.xml文件如下 manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.binglen.androidxximeapplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:supportsRtltrueandroid:themestyle/AppThemeservice android:name.AndroidXXIMEandroid:labelstring/xximeandroid:permissionandroid.permission.BIND_INPUT_METHODintent-filteraction android:nameandroid.view.InputMethod //intent-filtermeta-data android:nameandroid.view.im android:resourcexml/method//service/application/manifest 在Android Studio生成application块的尾部添加IME service的声明。第一行粗体字声明需要BIND_INPUT_METHOD权限第二行粗体字创建了一个能够匹配android.view.InputMethod的intent filter第三行粗体字定义了输入法的metadata。 需要注意service android:name必须与后面java文件中的类名保持一致。 接下来创建该service中声明的资源。 3、method.xmlmeta-data里用到了资源xml/method文件该文件中包含了输入法的subtype属性输入法通过该属性定义它所支持的输入模式和语言一个输入法可以包含多个subtype属性。在工程中res下创建xml文件夹把method.xml添加到该文件夹下。method.xml内容如下 ?xml version1.0 encodingutf-8? input-method xmlns:androidhttp://schemas.android.com/apk/res/androidsubtypeandroid:labelstring/subtype_en_USandroid:imeSubtypeLocaleen_USandroid:imeSubtypeModekeyboard / /input-method 关于subtype的属性可以参见InputMethodSubtype label是该subtype的名字 imeSubtypeLocale是该subtype支持的语言类型 imeSubtypeMode是它所支持的模式可以是keyboard或者voice当输入法被调起是系统会把用户选择的mode值传给输入法。 4、stings.xml在这里补上前文引用到的字符串定义 string namexximeXXIME/string string namesubtype_en_USEnglish (US)/string xxime在manifest中定义service的android:label时被引用到该字串用来显示系统“语言和输入法”中本输入法的名字 5、定义键盘布局在res/layout/中添加文件keyboard.xml定义键盘布局内容如下 ?xml version1.0 encodingUTF-8? android.inputmethodservice.KeyboardViewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/keyboardandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_alignParentBottomtrueandroid:keyPreviewLayout layout/preview / 点击android.inputmethodservice.KeyboardView查看关于它的XML属性其中keyPreviewLayout表示键盘被按下时的布局资源。在res/layout中添加preview.xml如下 ?xml version1.0 encodingutf-8? TextView xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:gravitycenterandroid:background#ffff00 android:textStyleboldandroid:textSize30sp /TextView 里面仅有一个TextView。 前面资源引用的源头都来自manifest文件却不见哪里引用keyboard.xml。答案在后面AndroidXXIME.java文件中onCreateInputView()函数中创建键盘视图和键盘布局时会用到包括下面的qwerty.xml。 6、定义按键信息按键信息定义在Keyboard中其格式形式如下 Keyboardandroid:keyWidth%10pandroid:keyHeight50pxandroid:horizontalGap2pxandroid:verticalGap2px Row android:keyWidth32px Key android:keyLabelA /.../Row.../Keyboard 这是一个嵌套结构其下包含了Row表示一行内部又包含Key表示一个按键每个按键有两个必填属性  · keyLabel按键上显示的文字  · codes该按键代表的Unicode码 我们的按键信息文件在res/xml/qwerty.xml中定义如下 Keyboard xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:keyWidth10%pandroid:horizontalGap0pxandroid:verticalGap0pxandroid:keyHeight60dpRowKey android:codes113 android:keyLabelq android:keyEdgeFlagsleft/Key android:codes119 android:keyLabelw/Key android:codes101 android:keyLabele/Key android:codes114 android:keyLabelr/Key android:codes116 android:keyLabelt/Key android:codes121 android:keyLabely/Key android:codes117 android:keyLabelu/Key android:codes105 android:keyLabeli/Key android:codes111 android:keyLabelo/Key android:codes112 android:keyLabelp android:keyEdgeFlagsright//RowRow android:layout_centerHorizontaltrueKey android:codes97 android:keyLabela android:horizontalGap5%p android:keyEdgeFlagsleft/Key android:codes115 android:keyLabels/Key android:codes100 android:keyLabeld/Key android:codes102 android:keyLabelf/Key android:codes103 android:keyLabelg/Key android:codes104 android:keyLabelh/Key android:codes106 android:keyLabelj/Key android:codes107 android:keyLabelk/Key android:codes108 android:keyLabell android:keyEdgeFlagsright//RowRowKey android:codes39 android:keyLabel android:keyEdgeFlagsleft/Key android:codes122 android:keyLabelz/Key android:codes120 android:keyLabelx/Key android:codes99 android:keyLabelc/Key android:codes118 android:keyLabelv/Key android:codes98 android:keyLabelb/Key android:codes110 android:keyLabeln/Key android:codes109 android:keyLabelm/Key android:codes44 android:keyLabel,/Key android:codes46 android:keyLabel. android:keyEdgeFlagsright//RowRow android:rowEdgeFlagsbottomKey android:codes63 android:keyLabel\? android:keyWidth10%p android:keyEdgeFlagsleft/Key android:codes47 android:keyLabel/ android:keyWidth10%p /Key android:codes32 android:keyLabel android:keyWidth40%p android:isRepeatabletrue/Key android:codes-5 android:keyLabelDEL android:keyWidth20%p android:isRepeatabletrue/Key android:codes-4 android:keyLabelDONE android:keyWidth20%p android:keyEdgeFlagsright//Row /Keyboard 其中有一些负值是定义在Keyboard类中的常量。 在字母a键的定义中有android:horizontalGap5%p官方文档解释android:horizontalGap用来定义按键之间的间距其实是与上一个按键之间的距离如果是左边打头的的按键则是与左边缘之间的距离。%p表示在父组件中的尺寸占比。 6、创建服务接下来就需要为输入法创建service和listener了。可以在一个类里完成这两个角色AndroidXXIME类扩展了InputMethodService并实现了KeyboardView.OnKeyboardActionListener接口。该类的定义如下 public class AndroidXXIME extends InputMethodServiceimplements KeyboardView.OnKeyboardActionListener {private KeyboardView keyboardView; // 对应keyboard.xml中定义的KeyboardViewprivate Keyboard keyboard; // 对应qwerty.xml中定义的Keyboard Overridepublic void onPress(int primaryCode) {}Overridepublic void onRelease(int primaryCode) {}Overridepublic void onText(CharSequence text) {}Overridepublic void swipeDown() {}Overridepublic void swipeLeft() {}Overridepublic void swipeRight() {}Overridepublic void swipeUp() {}Overridepublic View onCreateInputView() {// keyboard被创建后将调用onCreateInputView函数keyboardView (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null); // 此处使用了keyboard.xmlkeyboard new Keyboard(this, R.xml.qwerty); // 此处使用了qwerty.xmlkeyboardView.setKeyboard(keyboard);keyboardView.setOnKeyboardActionListener(this);return keyboardView;}private void playClick(int keyCode){// 点击按键时播放声音在onKey函数中被调用AudioManager am (AudioManager)getSystemService(AUDIO_SERVICE);switch(keyCode){case 32:am.playSoundEffect(AudioManager.FX_KEYPRESS_SPACEBAR);break;case Keyboard.KEYCODE_DONE:case 10:am.playSoundEffect(AudioManager.FX_KEYPRESS_RETURN);break;case Keyboard.KEYCODE_DELETE:am.playSoundEffect(AudioManager.FX_KEYPRESS_DELETE);break;default: am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD);}}Overridepublic void onKey(int primaryCode, int[] keyCodes) {InputConnection ic getCurrentInputConnection();playClick(primaryCode);switch(primaryCode){case Keyboard.KEYCODE_DELETE :ic.deleteSurroundingText(1, 0);break;case Keyboard.KEYCODE_DONE:ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));break;default:char code (char)primaryCode;ic.commitText(String.valueOf(code), 1);}} }   7、运行。具体方法参见《SoftKeyboard在AndroidStudio下的配置和运行》界面如下  该例程代码可参见https://github.com/palanceli/AndroidXXIME/tree/v1 转载于:https://www.cnblogs.com/palance/p/5120048.html
http://wiki.neutronadmin.com/news/366361/

相关文章:

  • 合肥网站建设报价西安未央区今天出啥事了
  • 濮阳网站建设熊掌号力软框架做网站
  • php网站开发图文教程机场建设集团网站
  • 广州建设厅官方网站邵阳营销型网站建设
  • 学做网站必须php吗网上学设计的培训机构
  • 如何制作手机网页最简单的方法长春网站快速优化排名
  • 厦门响应式网站建设广州营销型网站制作
  • 电商公司网站建设财务核算wordpress 多色主题
  • 网站开发都是用什么框架河北seo搜索引擎优化
  • 模板做的网站如何下载新乡网站建设新乡
  • 做的网站里面显示乱码怎么解决整合营销推广策略
  • 抓取资源的网站怎么做免费网站开发公司
  • 网站建站建设哪家好桂林市是几线城市
  • 推广网站广告有哪些望牛墩东莞网站建设
  • 怎么查网站制作空间有效期qq企业邮箱怎么申请
  • 四川广安网站建设城市中国商业网站平台
  • 沈阳建设工程信息网站品牌营销传播
  • 东莞南城网站设计做网站公司如何选
  • 互联网行业建设网站天津建设工程新希望
  • 巴彦淖尔市网站制作网站建设公司专业开发北京网站
  • 做网站属于什么技术台州网站开发建设
  • 网站优化需要那些工具wordpress入门教程(视频)
  • 济南本地网站小型企业网站模板
  • 长沙多迪php网站开发培训学校网站建设与依法行政
  • 做一个付费网站多少钱网站开发后怎么转安卓app
  • 新闻资讯网站备案四川网站开发制作
  • 天津市建设工程造价管理协会网站创建网站用英语怎么说
  • 东营做网站m0536广州城市建设规划局网站
  • iis 网站访问权限设置免费开源网站建设系统
  • 网站正在建设中单页农业推广网站建设