android系统上面的输入法,针对手机用户,已经做的比较完善了,但是如果在TV上面跑的话,就需要做一些改动。
2013-07-18 14:31
337 查看
我们已经练习了不少view了,在button介绍一文中,我们介绍了button事件的响应,然后在介绍其他view控件的时候,也介绍了不少响应这些控件的响应事件,看得出响应方法都是系统的一些回调函数在起作用,今天,我们在学习下Android虚拟键盘上下左右键按下和弹起的响应事件,由于代码简单,我就不再累赘的说明和交待了,看代码即可知用法。
动作一
创建EventsHandlerTest项目工程,这是我完成之后的目录:
动作二
在布局文件中,添加一个ListView控件,这个TestView主要是来显示和交待按键情况的,完整代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
动作三
修改主要的代码,理解见注解:
package org.ourunix.android.eventshandle;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
public class EventsHandleActivity extends Activity {
private TextView mTextView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.display);
}
// 按键按下,所触发的事件
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
display("中键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
display("下键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
display("左键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
display("右键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_UP:
display("上键报道,被按下");
break;
}
return super.onKeyDown(keyCode, event);
}
// 按键弹起,所触发的事件
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
display("中键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
display("下键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
display("左键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
display("右键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_UP:
display("上键报道,被弹起");
break;
}
return super.onKeyUp(keyCode, event);
}
// 用来显示文本框内容
public void display(String str) {
mTextView.setText(str);
}
}
动作四
运行EventsHandlerTest,效果如下:
运行程序,未按键
按上键
离开上键,其他类似
源码:EventsHandlerTest
动作一
创建EventsHandlerTest项目工程,这是我完成之后的目录:
动作二
在布局文件中,添加一个ListView控件,这个TestView主要是来显示和交待按键情况的,完整代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" />
</LinearLayout>
动作三
修改主要的代码,理解见注解:
package org.ourunix.android.eventshandle;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
public class EventsHandleActivity extends Activity {
private TextView mTextView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.display);
}
// 按键按下,所触发的事件
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
display("中键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
display("下键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
display("左键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
display("右键报道,被按下");
break;
case KeyEvent.KEYCODE_DPAD_UP:
display("上键报道,被按下");
break;
}
return super.onKeyDown(keyCode, event);
}
// 按键弹起,所触发的事件
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
display("中键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
display("下键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
display("左键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
display("右键报道,被弹起");
break;
case KeyEvent.KEYCODE_DPAD_UP:
display("上键报道,被弹起");
break;
}
return super.onKeyUp(keyCode, event);
}
// 用来显示文本框内容
public void display(String str) {
mTextView.setText(str);
}
}
动作四
运行EventsHandlerTest,效果如下:
运行程序,未按键
按上键
离开上键,其他类似
源码:EventsHandlerTest
相关文章推荐
- 手机调用系统的拍照和裁剪功能,如果界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。
- Android 打开word,excel,ppt,txt,html等文件有用户选择用何种手机上面已经安装有的工具打开
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。 例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3 你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得
- Android系统:SystemUi需要注意的一些知识点
- 金万钠说:“上面写的都是我想到的自己觉得比较重要的一些地方,还有很多细节是需要在实践中慢慢摸索和总结的。”
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- Android系统 手机需要用到的命令
- 【Android测试技巧】01. root后adb shell默认不是root用户时,如何将文件放入手机系统中
- 【转】【Android测试技巧】01. root后adb shell默认不是root用户时,如何将文件放入手机系统中
- 完成系统登录程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,
- 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。
- 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。
- 一个批处理,针对android系统的一些处理
- Android如何获取手机上面已经安装的app
- Android 获取手机系统图片、拍照图片时回调后通过URI解析路径的方法,比较全面!!!!
- Android项目实战--手机卫士22--卸载和分享功能的完成以及用户及系统应用的切换
- Android系统的改进(八)-- 当把手机当作存储介质连到电脑后,如果指定的铃声在存储卡上,指定的歌曲铃声消失,恢复默认
- Android系统的一些需要改进的地方
- App内嵌入群聊功能: 1. 需要在IOS、Android、WEB IM、PC进行即时消息IM通讯,消息能实时收发,群管理 /群内消息。IM系统需要在不侵入原APP的用户和业务体系的情况下