问题描述
我希望你一切都好。 在Sketchware im中,使用在create上的代码获取浮动窗口,这一切都是成功的,但是我想要一种最小化并单击或拖动浮动窗口(例如FB Messenger ICOn)的方法。 这是我在OnCreate中的代码:
私有WindowManager windowManager;
private WindowManager.LayoutParams layoutParams;
private View displayView;
private void showFloatingWindow() {
LayoutInflater layoutInflater = LayoutInflater.from(this);
displayView = layoutInflater.inflate(R.layout.main,null); displayView.setonTouchListener(new FloatingOnTouchListener());
final Button btn = displayView.findViewById(R.id.button1);
final Button btn2 = displayView.findViewById(R.id.button2);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
layoutParams = new WindowManager.LayoutParams();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.format = PixelFormat.RGBA_8888; layoutParams.gravity = Gravity.LEFT | Gravity.TOP; layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; layoutParams.width = 500;
layoutParams.height = 400;
layoutParams.x = 0;
layoutParams.y = 0;
btn2.setonClickListener(new View.OnClickListener() {
public void onClick(View v) {
showMessage("2");
}
});
btn.setonClickListener(new View.OnClickListener() {
public void onClick(View v) {
showMessage("1");
}
});
windowManager.addView(displayView,layoutParams);
}
private class FloatingOnTouchListener implements View.OnTouchListener {
private int x;
private int y;
@Override public boolean onTouch(View view,MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
x = (int) event.getRawX();
y = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE: int NowX = (int) event.getRawX();
int NowY = (int) event.getRawY();
int movedX = NowX - x;
int movedY = NowY - y;
x = NowX; y = NowY;
layoutParams.x = layoutParams.x + movedX;
layoutParams.y = layoutParams.y + movedY; windowManager.updateViewLayout(view,layoutParams);
break;
default:
break;
}
return true;
只需要帮助,在此先感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)