您的位置:首页 > 移动开发 > Android开发

Android开发--事件的处理/按键按下,弹起,触摸事件等

2013-01-25 15:31 531 查看
android中的事件类型分为按键事件和屏幕触摸事件

事件是我们在于UI交互式发生的,我们点击一个按键时,可能就已经除非好几个事件,例如我们点击数字键“0”,他会涉及到按下事件,和一个弹起(松开)事件,在我们android中还可能涉及到触摸屏事件,所以在android系统中,事件是作为常用的功能之一;

在android下,事件的发生是在监听器下进行,android系统可以响应按键事件和触摸屏事件,事件说明如下:

onClick(View v) 一个普通的点击按钮事件

boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)用于在多个事件连续时发生,用于按键重复,必须重载实现

boolean onKeyDown(int keyCode,KeyEvent event) 用于在按键进行按下时发生

boolean onKeyUp(int keyCode,KeyEvent event) 用于在按键进行释放时发生

onTouchEvent(MotionEvent event)触摸屏事件,当在触摸屏上有动作时发生

boolean onKeyLongPress(int keyCode, KeyEvent event)当你长时间按时发生

本实例实现上述的描述:

实现的截图如下:





实现的代码如下:

public class Touch_KEY_Listener_Activity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_touch__key__listener_);
}

//当按键按下时发生的事件
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_0:
DisplayToast("你按下数字键0");
break;

case KeyEvent.KEYCODE_DPAD_CENTER:
DisplayToast("你按下中间键");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
DisplayToast("你按下下方向键");
break;

case KeyEvent.KEYCODE_DPAD_LEFT:
DisplayToast("你按下左方向键");
break;

case KeyEvent.KEYCODE_DPAD_RIGHT:
DisplayToast("你按下右方向键");
break;

case KeyEvent.KEYCODE_DPAD_UP:
DisplayToast("你按下上方向键");
break;

case KeyEvent.KEYCODE_ALT_LEFT:
DisplayToast("你按下组合键alt+←");
break;

}
return super.onKeyDown(keyCode, event);
}

//当按键被松开时响应的事件
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_0:
DisplayToast("松开数字键0");
break;

case KeyEvent.KEYCODE_DPAD_CENTER:
DisplayToast("松开中间键");
break;

case KeyEvent.KEYCODE_DPAD_DOWN:
DisplayToast("松开下方向键");
break;

case KeyEvent.KEYCODE_DPAD_LEFT:
DisplayToast("松开左方向键");
break;

case KeyEvent.KEYCODE_DPAD_RIGHT:
DisplayToast("松开右方向键");
break;

case KeyEvent.KEYCODE_DPAD_UP:
DisplayToast("松开上方向键");
break;

case KeyEvent.KEYCODE_ALT_LEFT:
DisplayToast("松开组合键alt+←");
break;

}
return super.onKeyUp(keyCode, event);
}

// 触摸屏事件,当用手或者用笔在触摸屏上做动作是发生
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
int iAction=event.getAction();
if(iAction==MotionEvent.ACTION_MOVE)
{
DisplayToast("你在触摸屏上进行了滑动");
}
else
{
return false;
}
return super.onTouchEvent(event);
}

//连续点击按键时发生的事件
@Override
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
// TODO Auto-generated method stub
return super.onKeyMultiple(keyCode, repeatCount, event);
}

public void DisplayToast(String str)
{
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_touch__key__listener_, menu);
return true;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: