Android 如何使WindowManager按钮可单击?
我使用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.
按钮.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
就可以工作了