在Android中将触摸事件从覆盖活动传递到底层活动

3

我创建了一些透明的活动,当打开不同的应用程序时,我的活动会启动并在其上打开(Intent.FLAG_ACTIVITY_NEW_TASK)。

我的目标是希望我的活动所进行的操作能够反映到其他活动中。也就是说,当我向下滚动时,底部视图也会滚动。

我尝试使用一些标志组合来实现这一点,但并没有成功。

我无法同时在两个活动中传递触摸事件。它只在一个视图上起作用,我需要在顶部(透明)活动中发生的事件同步到底部活动中。

 Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
        // window.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        window.addFlags(WindowManager.LayoutParams.FLAG_SPLIT_TOUCH);
        // window.addFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
        //window.addFlags(WindowManager.LayoutParams.TYPE_PHONE);


        setContentView(R.layout.trans);


        final View v = getWindow().getDecorView().findViewById(android.R.id.content);

        v.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {

                Log.i("TAG", View !!!!!!!!");


                return false;
            }
        });
2个回答

2

这是不可能的。你既不能向其他应用程序的活动注入输入事件,也不能接收它们的输入事件(称为“tapjacking”)。


0

你不能使用触摸事件来做那个,而且我也不确定为什么你想这样做。

话虽如此,你可以使用本地广播或者EventBus,但这真的是一个糟糕的主意,在一个Activity中捕获触摸事件,然后传递给另一个Activity。


我可以用EventBus库来做吗? - Ertuğrul Çetin
是的,但你需要尝试一下它的性能(因为触摸事件的频率),你只需在一个活动中使用eventBus.post,在另一个活动中使用eventBus.register。不过,我并不真正推荐这样做。 - Mostafa Gazar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接