万书网 > 文学作品 > Android从入门到精通 > 第78页

第78页



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