多语言展示
当前在线:1077今日阅读:27今日分享:41

activity 如何屏蔽按键

activity是android应用开发中的四大组件之一,代表这应用程序的一个个可以看见的窗体,即一个个界面,我们所点击的按钮或者文本框都是activity的布局中所包含的控件,所谓的activity屏蔽按键其实就是activity中的控件拦截点击事件,并且不进行任何操作。
工具/原料
1

电脑

2

安卓模拟器

3

android studio

方法/步骤
1

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

2

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

3

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

4

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

6

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

7

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

注意事项

如果你觉得这篇文章有用的话,麻烦给我投下票(~ ̄▽ ̄)~,万分感谢

推荐信息