Android事件处理包括键盘事件和触摸事件两大类。键盘事件包括按下、弹起等,触摸事件包括按下、滑动、弹起、双击等。在Android控件中,提供了事件处理的相关方法。在 View类中,提供了onTouchEvent( )方法来处理触摸事件。还可以使用setOnTouchListener( )为控件设置监听器来处理触摸事件。
键盘事件
Android中控件在处理物理按键事件时,提供的回调方法有onKeyUp( ), onKeyDown( ) 和 onKeyLongPress( ) 方法。
例子,屏蔽物理键盘中的后退键。
重写onKeyDown( )方法来拦截用户单击后退按钮事件,如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;//屏蔽后退键
}
return super.onKeyDown(keyCode, event);
}
例子,当用户单击增加音量键时显示提示信息,如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;//屏蔽后退键
}
return super.onKeyDown(keyCode, event);
}
NOTE:当单击音量增加键时, onKeyDown方法返回的是false,表示没有屏蔽该键的功能。
触摸事件
对于触摸屏上的按钮,可以使用onClickListener 和 onLongClickListener两个监听器分别处理用户短时间和长时间单击事件。
View类是其它Android控件的父类,在该类中定义了setOnTouchListener()方法用来为控件设置触摸事件监听器。
例子
public class MainActivity extends Activity implements OnTouchListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOnTouchListener(this);//设置触摸事件监听器
layout.setBackgroundResource(R.drawable.background);//设置背景图片
setContentView(layout);
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
Toast.makeText(this, "发生触摸事件", Toast.LENGTH_LONG).show();
return true;
}
}