Android事件练习

来源:互联网 发布:vb程序设计实例 编辑:程序博客网 时间:2024/05/17 20:35

Android上有响应案件和触屏两种事件

具体:

boolean onKeyDown(int keyCode,int KeyEvent event)用于响应案件按下

boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现

boolean onKeyUp(int keyCode,int KeyEvent event)用于响应按键释放

onTouchEvent(MotionEvent event)用于响应触摸屏事件

 

例子:

package org.loulijun.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class TestCode extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button_ok=(Button)findViewById(R.id.ok);
        button_ok.setOnClickListener(new Button.OnClickListener()
        {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    DisplayToast("点击了OK按钮");
   }
         
        });
    }
    public boolean onKeyDown(int keyCode,KeyEvent event)
    {
     switch(keyCode)
     {
     case KeyEvent.KEYCODE_DPAD_CENTER:
      DisplayToast("按下:中键");break;
     case KeyEvent.KEYCODE_DPAD_UP:
      DisplayToast("按下:上键");break;
     case KeyEvent.KEYCODE_DPAD_DOWN:
      DisplayToast("按下:下键");
      break;
     case KeyEvent.KEYCODE_DPAD_LEFT:
      DisplayToast("按下:左键");
      break;
     case KeyEvent.KEYCODE_DPAD_RIGHT:
      DisplayToast("按下:右键");
      break;
      
     }
     return super.onKeyDown(keyCode,event);
    }
    public boolean onKeyUp(int keyCode,KeyEvent event)
    {
     switch(keyCode)
     {
     case KeyEvent.KEYCODE_DPAD_CENTER:
      DisplayToast("弹起:中键");
      break;
     case KeyEvent.KEYCODE_DPAD_UP:
      DisplayToast("弹起:上键");
      break;
     case KeyEvent.KEYCODE_DPAD_DOWN:
      DisplayToast("弹起:下键");
      break;
     case KeyEvent.KEYCODE_DPAD_LEFT:
      DisplayToast("弹起:左键");
      break;
     case KeyEvent.KEYCODE_DPAD_RIGHT:
      DisplayToast("弹起:右键");
      break;
     }
     return super.onKeyUp(keyCode, event);
    }
    public boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)
    {
     return super.onKeyMultiple(keyCode, repeatCount, event);
    }
   
    public boolean onTouchEvent(MotionEvent event)
    {
     int iAction=event.getAction();
     if(iAction==MotionEvent.ACTION_CANCEL||
     iAction==MotionEvent.ACTION_DOWN||  
     iAction==MotionEvent.ACTION_MOVE
     )
     {
      return false;
     }
     int x=(int)event.getX();
     int y=(int)event.getY();
     DisplayToast("触摸笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
     
     return super.onTouchEvent(event);
    }
   
    public void DisplayToast(String str)
    {
     Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
    }
}

 

当点击按钮后,就会弹出“点击了OK按钮”的Toast,当按下前后左右中键的时候,会弹出“按下:中键”等Toast,当在触摸屏上点击某一个点的时候,弹出该点坐标的Toast

下面是运行的一些结果显示:

1

 

的

原创粉丝点击