Bri*_*ian 60 service events android touch gesture
我想知道像SwipePad和Wave Launcher这样的应用程序是如何通过服务来检测触摸手势/事件的.这些应用程序能够检测到触摸手势,即使它不在自己的活动中.我看过整个互联网,但没有找到他们如何做到这一点.
我的主要问题是服务如何监听触摸客户/事件,就像常规活动可能会收到MotionEvents一样,即使它可能不在原始活动或上下文中.我本质上是在尝试构建一个应用程序,该应用程序将从用户处重新识别特定的触摸手势,无论哪个Activity位于顶部,并在该手势被识别时执行某些操作.触摸识别将是在后台作为服务运行的线程.
pyp*_*ies 18
我有同样的问题,我终于搞清楚了!感谢这篇文章:创建系统覆盖窗口(始终在顶部).您需要使用警报窗口而不是叠加层(这也意味着您可以在Andoid ICS中使用它):
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
Run Code Online (Sandbox Code Playgroud)
然后以这种方式附加一个GestureListener:
GestureDetector gestureDetector = new GestureDetector(this, new AwesomeGestureListener());
View.OnTouchListener gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
overlayView.setOnTouchListener(gestureListener);
Run Code Online (Sandbox Code Playgroud)
好极了!
| 归档时间: |
|
| 查看次数: |
34097 次 |
| 最近记录: |