zoukankan      html  css  js  c++  java
  • Android常用的物理按键及其触发事件

        Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可;当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用。不过,为了侦听这个事件,你必须扩展这个类并重写该方法,当一些物理按钮被按下时会调用onKeyDown()方法;

        常见的按键消息和触摸消息

    package com.example.androideventdemo;
    
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    import android.app.Activity;
    
    /**
     * Android常用的物理按键及其触发事件 
     * KEYCODE_POWER 电源键 
     * KEYCODE_MENU 菜单键 
     * KEYCODE_BACK 后退键
     * KEYCODE_HOME Home键 
     * KEYCODE_CAMERA 相机键 
     * KEYCODE_SEARCH 查找键 
     * KEYCODE_VOLUME_UP 音量键+ 
     * KEYCODE_VOLUME_DOWN 音量键- 
     * KEYCODE_VOLUME_MUTE 静音 
     * 方向键 
     * KEYCODE_DPAD_CENTER
     * KEYCODE_DPAD_UP 
     * KEYCODE_DPAD_DOWN 
     * KEYCODE_DPAD_LEFT 
     * KEYCODE_DPAD_RIGHT 
     * 键盘键
     * 数字0~9 字母A~Z 
     * KEYCODE_0 ~ KEYCODE_9 
     * KEYCODE_A ~ KEYCODE_Z 
     * 提供的回调方法有
     * onKeyUp()、OnKeyDown()、onKeyLongPress()
     * 
     * @author Administrator
     * 
     */
    public class MainActivity extends Activity {
    
    	private Button btnClose = null;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		btnClose = (Button) findViewById(R.id.btnClose);
    		btnClose.setOnClickListener(new closelistener());
    	}
    
    	class closelistener implements OnClickListener {
    
    		@Override
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    			finish();
    		}
    
    	}
    
    	/**
    	 * 重写onKeyDown方法可以拦截系统默认的处理
    	 */
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		// TODO Auto-generated method stub
    		if (keyCode == KeyEvent.KEYCODE_BACK) {
    			Toast.makeText(this, "后退键", Toast.LENGTH_SHORT).show();
    			return true;
    		} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
    			Toast.makeText(this, "声音+", Toast.LENGTH_SHORT).show();
    			return false;
    		} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
    			Toast.makeText(this, "声音-", Toast.LENGTH_SHORT).show();
    			return false;
    		} else if (keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
    			Toast.makeText(this, "静音", Toast.LENGTH_SHORT).show();
    			return false;
    		} else if (keyCode == KeyEvent.KEYCODE_HOME) {
    			Toast.makeText(this, "Home", Toast.LENGTH_SHORT).show();
    			return true;
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    
    	/**
    	 * 重写onTouchEvent方法可以处理Touch事件
    	 */
    	@Override
    	public boolean onTouchEvent(MotionEvent event) {
    		// TODO Auto-generated method stub
    		if (event.getAction() == MotionEvent.ACTION_MOVE) {
    			Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
    		} else if (event.getAction() == MotionEvent.ACTION_UP) {
    			Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
    		} else if (event.getAction() == MotionEvent.ACTION_DOWN) {
    			Toast.makeText(this, "ACTION_MOVE", Toast.LENGTH_SHORT).show();
    		}
    		return super.onTouchEvent(event);
    	}
    
    }
    


    更多的事件可以参考SDK文档的MotionEvent、KeyEvent两个类,在KeyEvent中如果处理了KeyEvent.KEYCODE_BACK事件,那就不会执行默认的操作,比如收到KeyEvent.KEYCODE_BACK事件后默认是退出,如果直接return那就不会处理退出了。

    如下图



    示例代码

    点击打开链接







  • 相关阅读:
    《一个医生的故事》:协和妇产科主任文艺散文集,三星
    《睡眠正能量》:《正能量》作者关于睡眠的科学研究的科普与综述,三星
    [miniApp] WeChat user login code
    [Vue @Component] Pass Vue Render Functions as Props for Powerful Patterns
    [Vue @Component] Write Vue Functional Components Inline
    [Vue @Component] Control Template Contents with Vue's Render Function
    [Vue @Component] Pass Props to Vue Functional Templates
    [JavaEE] Bootstrapping a JavaEE Application
    [Vue @Component] Place Content in Components with Vue Slots
    [Vue @Component] Define Props on a Vue Class with vue-property-decorator
  • 原文地址:https://www.cnblogs.com/pangblog/p/3348100.html
Copyright © 2011-2022 走看看