2
我創建了一個TYPE_SYSTEM_OVERLAY
,我希望使用service
來捕獲此覆蓋層上的手指/觸摸事件。TYPE_SYSTEM_OVERLAY中的手勢檢測器
覆蓋工作正常,但問題是,當我嘗試將GestureDetector
納入其中時,它無法捕獲觸摸事件。當我在屏幕上,麪包味精「onDown」沒有顯示..挖掘,如果有人告訴我,我在哪裏出了錯:(我已經嘗試實現GestureDetector
外OverlayView
類的,也沒有結果。
會明白
public class NUSLogService extends IntentService {
OverlayView mView;
@Override
public void onCreate() {
super.onCreate();
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;
params.setTitle("TouchLayer");
mView = new OverlayView(getApplicationContext());
final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if(mView != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
}
//self-created overlay class
class OverlayView extends ViewGroup implements OnGestureListener{
private GestureDetector gestureScanner = new GestureDetector(this);
public OverlayView(Context context) {
super(context);
Toast.makeText(getContext(),"OverlayView", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// return super.onTouchEvent(event);
return gestureScanner.onTouchEvent(event);
}
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
}
@Override
public boolean onDown(MotionEvent e) {
Toast.makeText(getContext(),"onDown", Toast.LENGTH_SHORT).show();
return false;
}
}
嗨,感謝您的回覆。但如果我把'onTouchEvent'上的吐司味精,它的工作..所以如果我使用'IntentService'是否重要? 我在Android 2.2上實現,所以應該現在好嗎? – star 2012-03-15 11:52:35
@star:「如果我使用IntentService,這很重要嗎?」 - 當然很重要。添加後立即刪除您的視圖。 – CommonsWare 2012-03-15 11:58:55
我已經實現了使用'服務'的手勢檢測器,但也不能工作[我不能@Override的onTouchEvent()?相同的代碼工作使用'活動'..任何想法如何我可以使用服務使用GestureDetector? – star 2012-03-15 13:12:24