activity 如何屏蔽按键
1、首先我们要知道activity中的事件传递机制,实在布局控件中由外向内传播的,传播模式如图所示

2、来看一个很常见的activity的界面布局,外面是一个LinearLayout线性布局控件,里面一个Button的按钮控件,我们android的点击事件传递顺序是由外向内的,即由最外层的控件向里面传递,如果在最外层控件中将事件拦截,并且不做任何操作,就可以达到屏蔽触摸的效果了

3、所以这里我们继承最外层布局控件类,然后对其中的onInterceptTouchEvent(MotionEventev)方法进行重写,对触摸事件ev返回true进行拦截(这种做法比较暴力,比较正规的做法是对ev进行switch,不拦截其中down事件,这样内部控件就有办法知道外界发生了一次触碰)

4、activity除了会响应触摸事件之外,还会响应按键的点击事件,包括音量键,电源键,home键等

5、如何屏蔽按键的操作呢,这里我们就要对activity下手了,在Activity的派生类中可以通过重写onKeyDown()和onKeyUp()这两个方法来拦截返回键, 通过对应的键码,我们就可以对相应的事件例如:KEYCODE_HOME,KEYCODE_BACK

6、不过,在android4.0版本后,Home键被定义为强制返回桌面,即无法被onKeyDown()和onKeyUp()给完全拦截,我们还需要在activity执行onCreate()方法的时候设置Home键位可以被拦截,即设置enableHomeKeyDispatched(false); 这样子Home键就又可以被拦截了

7、需要注意的是,当你拦截了所有的触摸事件和按键事件之后,请在模拟器上跑,因为模拟器可以关,如果在真机上跑,那你就只能抠电池了,哈哈
