【问题标题】:Injecting a click listener on an image overlay service在图像覆盖服务上注入点击监听器
【发布时间】:2018-07-12 18:13:51
【问题描述】:

我已经设法实现了一个具有图像的覆盖服务,它可以在应用程序中移动。但是我试图在覆盖服务上注入一个点击监听器,这样当我按下它时,例如覆盖服务下的一个按钮,它应该将点击传递给底层按钮并被按下。我试图环顾四周,但没有运气。
关于如何以聪明的方式做到这一点的任何提示?

这是移动叠加层的代码

overlayView.setOnTouchListener(new View.OnTouchListener() {
            private WindowManager.LayoutParams paramsF = params;
            private int initialX;
            private int initialY;
            private float initialTouchX;
            private float initialTouchY;

            @Override public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    // Get current time in nano seconds.

                    initialX = paramsF.x;
                    initialY = paramsF.y;
                    initialTouchX = event.getRawX();
                    initialTouchY = event.getRawY();
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                case MotionEvent.ACTION_MOVE:
                    paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
                    paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
                    windowManager.updateViewLayout(overlayView, paramsF);
                    break;
                }
                return false;
            }

【问题讨论】:

    标签: android service overlay inject


    【解决方案1】:

    您可能想要覆盖 ontouchlistener 以便它不消耗事件而是将其传递到下一层?我不太清楚您要做什么,但如果我们在同一页面上,那就是您想要的。

    【讨论】:

    • 没错!如何覆盖它以便将点击传递到下一层?
    • 如果点击被消费,该方法返回真,如果不是,它返回假。因此,如果您想让发生的事件发生叠加层消耗的事件返回 true,否则返回 false,Android 系统应自行传播。
    • 不确定你的意思,但难道不能用 ontouchlistener 以某种方式做到这一点吗? - 我在帖子中提供了代码
    • 理论上应该将点击传递到下一层。
    • 但是当我点击时它似乎不起作用,它不会将点击传递给覆盖层后面的按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多