我喜欢开发一个类似于Swapps的应用程序。我试图在任何屏幕上显示一个按钮,并且仅在滑动操作时才会出现。我尝试使用下面的代码无法获取TYPE_SYSTEM_OVERLAY的Touch事件
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type =WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
params.format =PixelFormat.TRANSLUCENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
parentlay = new LinearLayout(this);
mybt = new Button(getApplicationContext());
bt.setText("Click to Go");
parentlay.setBackgroundColor(Color.TRANSPARENT);
parentlay.setHapticFeedbackEnabled(true);
parentlay.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// event.getAction() prints 4 and not able to get up or down event
}
});
windowmanager.addView(parentlay, params);
我想显示的按钮时,用户通过在用户从挥笔捕获事件和做
parentlay.addView(bt);
,并删除该视图左到右刷卡从右到左用
parentlay.removeView(bt);
如上所述,我没有得到运动事件,除非我改变类型为TYPE_SYSTEM_ALERT,但是inturn冻结了所有的屏幕,并且不能点击返回或home按钮,是否有其他方法可以做到这一点。
我刚刚试过以下修改
params.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
params.height = WindowManager.LayoutParams.MATCH_PARENT;
params.width = WindowManager.LayoutParams.MATCH_PARENT;
但我不能点击下面的按钮,可能是其因MATCH_PARTENT,但如果我将它设置为wrap_content然后我不能让单击事件。
感谢您的回复,我需要通过刷卡动作或任何行动事件中加入的观点,像什么swapps做了。不是已经启动我app.and通过一个动作事件删除视图 – ganesh 2013-03-06 04:54:55
确定为现在我因此可以其相当接近接受DjHacktor回答我的要求 – ganesh 2013-03-06 05:07:25
感谢你这么多! – kord 2016-04-04 14:55:28