美图秀秀可以做网站吗,辽宁城乡建设招投标交易平台,app企业签名,互联网公司排名2022前100强【51CTO独家译文】本文为翻译自外文网站tutsplus.com的《Android交互体验必知#xff1a;功能按键事件》。以下为全部译文#xff1a;开始学习每一种Android设备一般都会提供除字母和数字外的物理功能按键#xff0c;这一般是根据不同的Android制造商而有所不同#xff0c;…【51CTO独家译文】本文为翻译自外文网站tutsplus.com的《Android交互体验必知功能按键事件》。以下为全部译文开始学习每一种Android设备一般都会提供除字母和数字外的物理功能按键这一般是根据不同的Android制造商而有所不同比如Sony就只实现了这些功能按键中的三种而已。这些功能按键如果设计良好对于正在开发的app应用能给用户带来很好交互体验。Android应用主要是基于Activities的设计这个相信大多数开发者都已经十分熟悉并可以在官方开发手册中学习到。而今天我们准备学习的是如何通过实现KeyEvent.Callback这个接口从而能重新定义Android设备上的功能按键为我们开发的应用服务。功能按键的常量定义和方法KeyEvent类有多个定义好的key常量表示一个标准的Android设备中的功能按键列表入下功能按键常量定义描述PowerKEYCODE_POWER打开设备或者将设备唤醒BackKEYCODE_BACK回到上一屏(页)HomeKEYCODE_HOME返回主菜单(屏幕)SEARCHKEYCODE_SEARCH打开一个搜索CAMERAKEYCODE_CAMERA打开摄像头功能VOLUMEKEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWN调节音量大小读者可以从官方文档中找到更多关于功能按键的常量定义以上列表的只是常用的几个。对于功能按键的调用常用的回调方法有入下几个onKeyDown()onKeyUp()onKeyLongPress()而对于设备中的轨迹球或者触摸屏幕常用的回调方法有入下几个onTrackballEvent()onTouchEvent()开发者可以选择只实现上面谈到的某些回调方法即可不需要全部都实现。例如如果想避免用户偶然按下了CAMERA或者SEARCH检索的功能键则只需要在onKeyDown()的回调方法中进行编写代码控制并返回true的值让系统知道当前捕捉的是onkeyDown事件即可。关于特殊的键然而有些特殊的键是开发者没有办法去重新定制的因为它们直接由系统去调用比如象power和home键BACK回退键也是特殊键之一尽管如果开发者要重新定制其行为的话可以重新覆写onBackPressed()方法但在一般情况下强烈不建议开发者这样去做因为回退键本身功能是回到上一屏的重新定制的话会给用户带来很多困扰。下面我们就以一个具体例子说明如何定制这些功能键。步骤1建立Android工程首先打开eclipse,选择新建立一个Android功能将工程命名为KeyControl,选择使用Android2.1版本的SDK***点FINISH完成创建如下图步骤2重写onKeyDown()方法首先学习重写onKeyDown()方法代码如下OverridepublicbooleanonKeyDown(intkeyCode, KeyEvent event) {switch(keyCode){caseKeyEvent.KEYCODE_MENU:Toast.makeText(this,Menu key pressed, Toast.LENGTH_SHORT).show();returntrue;caseKeyEvent.KEYCODE_SEARCH:Toast.makeText(this,Search key pressed, Toast.LENGTH_SHORT).show();returntrue;caseKeyEvent.KEYCODE_BACK:onBackPressed();returntrue;caseKeyEvent.KEYCODE_VOLUME_UP:event.startTracking();returntrue;caseKeyEvent.KEYCODE_VOLUME_DOWN:Toast.makeText(this,Volumen Down pressed, Toast.LENGTH_SHORT).show();returnfalse;}returnsuper.onKeyDown(keyCode, event);}在上面的代码中在onKeyDown方法中分别根据keycode去判断触发的是哪个功能键例如菜单menu键BACK键搜索功能键盘声音键等并且通过Toast的显示方式实现了自己的功能而没有调用原先该功能键盘的实际功能。其中请注意的是上面代码中对KeyEvent.KEYCODE_VOLUME_DOWN的捕捉事件中返回的值不是true而是false,则表明由系统直接处理该功能事件当用户按下声音键时实际上已经是通过系统调用而减少了音量大小。步骤3重写onKeyUp方法同样道理我们重写onKeyUp方法代码如下OverridepublicbooleanonKeyUp(intkeyCode, KeyEvent event) {switch(keyCode){caseKeyEvent.KEYCODE_MENU:Toast.makeText(this,Menu key released, Toast.LENGTH_SHORT).show();returntrue;caseKeyEvent.KEYCODE_SEARCH:Toast.makeText(this,Search key released, Toast.LENGTH_SHORT).show();returntrue;caseKeyEvent.KEYCODE_VOLUME_UP:if(event.isTracking() !event.isCanceled())Toast.makeText(this,Volumen Up released, Toast.LENGTH_SHORT).show();returntrue;caseKeyEvent.KEYCODE_VOLUME_DOWN:Toast.makeText(this,Volumen Down released, Toast.LENGTH_SHORT).show();returntrue;}returnsuper.onKeyUp(keyCode, event);}在上面的代码中基本跟之前的onKeyDown()方法中介绍的功能一样分别对Menu菜单,Search检索功能减少音量三个键重新覆写了方法用Toast的方式显示信息。而在Volumeup音量增加的按键事件捕捉中如果用户一段时间没按下去的话则会提示出错信息。步骤4重写onKeyLongPress方法重写onKeyLongPress方法的代码如下OverridepublicbooleanonKeyLongPress(intkeyCode, KeyEvent event) {Toast.makeText(this,Pressed for a long time ) , Toast.LENGTH_SHORT).show();returntrue;}onKeyLongPress方法是在当在onKeyDown()方法中对某一个功能键调用了event.startTracking()方法跟踪并且按下这个功能键有一阵时间后才触发。所以上面的代码我们是在按下音量的增加功能键一阵时间后会显示提示信息。event.startTracking()方法之能在同一时间监视一个按键如果同一时间另外一个按键也按下则该事件会取消对前一个按键的跟踪。步骤5重写onBackPressed()方法代码如下OverridepublicvoidonBackPressed() {Toast.makeText(this,Back key pressed ), Toast.LENGTH_SHORT).show();super.onBackPressed();}依然要提醒读者注意的是***不要重写该方法因为会给用户的操作体验带来困扰。步骤6重写onTouchEvent()方法代码如下OverridepublicbooleanonTouchEvent(MotionEvent event) {floatx event.getX();floaty event.getY();Toast.makeText(this,Touch press on x: x y: y, Toast.LENGTH_SHORT).show();returntrue;}在上面的代码中在onTouchEvent方法中当用户触摸屏幕时会获得触摸点所在的X坐标和Y坐标并显示出来。小结本文中简单介绍了在Android中如何对常见的功能按键进行覆写的方法以及其中的注意点。读者可以在应用中根据实际情况需要进行定制以设计出更好的用户体验的应用。