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那就不会处理退出了。

    如下图



    示例代码

    点击打开链接







  • 相关阅读:
    idea 中的new file 没有jsp
    springboot-helloworld-idea
    springboot-RequestMappingHandlerMapping
    swagger-注解
    springboot-mybatis
    js-dialog
    js-jsTree
    maven-tomct插件
    maven-插件地址
    docker入门 基础命令 docker安装
  • 原文地址:https://www.cnblogs.com/pangblog/p/3348100.html
Copyright © 2011-2022 走看看