Android 如何使WindowManager按钮可单击?

Android 如何使WindowManager按钮可单击?,android,onclicklistener,android-windowmanager,Android,Onclicklistener,Android Windowmanager,我使用WindowManager创建一个按钮以显示在来电屏幕中,我想使此按钮可单击以触发意图。但是,我可以通过按钮.OnTouchListener()将其滑动到任何地方,但我不知道如何使其可单击。如何设置WindowManager参数以使其生效??谢谢 int LAYOUT_FLAG; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { LAYOUT_FLAG = WindowManager.

我使用WindowManager创建一个按钮以显示在来电屏幕中,我想使此按钮可单击以触发意图。但是,我可以通过
按钮.OnTouchListener()
将其滑动到任何地方,但我不知道如何使其可单击。如何设置WindowManager参数以使其生效??谢谢

 int LAYOUT_FLAG;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        } else {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
        }
        wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
        params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                LAYOUT_FLAG,
                0,
                PixelFormat.TRANSPARENT);
        params.flags =
                 WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
        params.gravity = Gravity.LEFT | Gravity.TOP;

        params.x = 500;
        params.y = 500;


        addBtn=new Button(ctx);
        addBtn.setText("button");
        wm.addView(addBtn, params);
        addBtn.setOnTouchListener(addBtnTouchListener);
        addBtn.setOnClickListener(addBtnClickListener);
在addBtnTouchListener中:

 private Button.OnTouchListener addBtnTouchListener = new Button.OnTouchListener() {
    int lastX, lastY;
    int paramX, paramY;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                lastX = (int) event.getRawX();
                lastY = (int) event.getRawY();
                paramX = params.x;
                paramY = params.y;
                break;
            case MotionEvent.ACTION_MOVE:
                int dx = (int) event.getRawX() - lastX;
                int dy = (int) event.getRawY() - lastY;
                params.x = paramX + dx;
                params.y = paramY + dy;
                
                wm.updateViewLayout(addBtn, params);
                break;
        }

        return true;
    }
};

我发现我设置了
按钮。OnTouchListener
返回false,那么
OnClickListener
就可以工作了