public class ForbiddenBackActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //设置页面布局
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true; //屏蔽后退键
}
return super.onKeyDown(keyCode, event);
}
}
运行程序后,显示如图7.2所示的界面。单击后退键,可以看到应用程序并未退出。
图7.2 屏蔽物理按键
7.2.3 范例2:提示音量增加事件
例7.2 在Eclipse中创建Android项目,名称为7.2,当用户单击增加音量键时显示提示信息。(实例位置:光盘\TM\sl\7\7.2)
编写VolumeUpMessageActivity类,它继承了Activity类。重写onCreate()方法来加载布局文件,重写onKeyDown()方法,当音量增加键被按下时显示提示信息,代码如下:
public class VolumeUpMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //设置页面布局
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
Toast.makeText(this, "音量增加", Toast.LENGTH_LONG).show(); //提示音量增加
return false;
}
return super.onKeyDown(keyCode, event);
}
}
运行程序后,显示如图7.3所示的界面。单击音量增加键,屏幕下方显示音量增加信息。
注意: 当单击音量增加键时,onKeyDown()方法的返回值是false,这并没有屏蔽该键的功能。
图7.3 显示音量增加信息
7.3 处理触摸事件
教学录像:光盘\TM\lx\7\处理触摸事件.exe
目前,主流的手机都以较大的屏幕取代了外置键盘,平板电脑也没有提供键盘,这些设备都需要通过触摸来操作,下面介绍一下Android中如何实现触摸事件的处理。
7.3.1 范例1:按钮触摸事件
对于触摸屏上的按钮,可以使用OnClickListener和OnLongClickListener监听器分别处理用户短时间单击和长时间单击(按住按钮一段时间)事件。
例7.3 在Eclipse中创建Android项目,名称为7.3,当用户短时间单击按钮和长时间单击按钮时,显示不同的提示信息。(实例位置:光盘\TM\sl\7\7.3)
编写TouchEventActivity类,它继承了Activity类。重写onCreate()方法来加载布局文件,使用findViewById()方法获得布局文件中定义的按钮,并为其增加OnClickListener和OnLongClickListener事件监听器,代码如下:
public class TouchEventActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //设置页面布局
Button button = (Button) findViewById(R.id.button); //获得按钮控件
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) { //处理用户短时间单击按钮事件
Toast.makeText(TouchEventActivity.this, getText(R.string.short_click),
Toast.LENGTH_SHORT).show();
}
});
button.setOnLongClickListener(new OnLongClickListener() {
public boolean onLongClick(View v) { //处理用户长时间单击按钮事件
Toast.makeText(TouchEventActivity.this, getText(R.string.long_click),
Toast.LENGTH_SHORT).show();
return true;
}
});
}
}
运行程序后,短时间单击按钮,显示如图7.4所示的提示信息。
图7.4 显示短时间单击按钮信息
长时间单击按钮,显示如图7.5所示的提示信息。
图7.5 显示长时间单击按钮信息
View类是其他Android控件的父类。在该类中,定义了setOnTouchListener()方法用来为控件设置触摸事件监听器,下面演示该监听器的用法。
7.3.2 范例2:检测触摸事件
例7.4 在Eclipse中创建Android项目,名称为7.4,当用户触摸屏幕时显示提示信息。(实例位置:光盘\TM\sl\7\7.4)
编写ScreenTouchEventActivity类,它继承了Activity类并实现了OnTouchListener接口。重写onCreate()方法来定义线性布局管理器,并为其增加触摸事件监听器及设置背景图片,重写onTouch()方法来处理触摸事件,显示提示信息,代码如下:
public class ScreenTouchEventActivity extends Activity implements OnTouchListener {
@Override