有没有人有任何想法,这可怎么实现的?
一些例子:
任何想法?谢谢。
即使用在上面覆盖所做的现有活动不管。您可以在这里找到发现我github证明概念的证明,这是对Android的stackexchange.com问题源,其中,人谁从残疾遭受的,不能滑动屏幕滚动并正在寻找一种方式来做到这一点方便,在我拼凑起来的代码来显示“的Page Up / Page Down键”以最小的运动,只是通过点击文本(实际上,它的按钮),其覆盖在活动的顶部。但由于道路Android和安全工作,滚动事件不能被注入到正在运行的活动。
它的工作方式是这样的,从onCreate
活动有这
WindowManager.LayoutParams layOutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
所需要的标志WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY
和WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
。
举证责任是确保触摸被处理,这意味着看出来的时候,触摸事件在区域“打”,并采取相应的行动。通过“听”在视图的onTouch
事件,那就是:
LayoutInflater layOutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View myView = layOutInflater.inflate(R.layout.myview, null);
myView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
....
}
});
例如,myview
布局内想象一个按钮,因此,使用一个按钮小部件,
Button myButton = (Button)myView.findViewById(R.id.myButton);
Rect outRectHit = new Rect();
myButton.getHitRect(outRectHit);
现在,我们需要确定的触感,这发生在onTouch
处理器内部边界的“碰撞”:
float x = event.getX();
float y = event.getY();
if (x > outRectHit.left && x < outRectHit.right &&
y > outRectHit.top && y < outRectHit.bottom){
... Handle this accordingly
}
此简要介绍了如何做这样的事情在最上层的任何活动的叠加。
只是为了确保,该代码被调试,并在任何形状或形式表现出任何活动不会干扰。例如,如果活动事实上是OpenGL的游戏,会发生什么,你会怎么做?
这是需要说明的被关注什么。
你可能想看看Tooleap SDK。它提供了转向Android的定期活动纳入浮动部件的最简单的方法。
例如,假设你有一个名为活动MyActivity
Intent intent = new Intent(context, MyActivity.class);
TooleapPopOutMiniApp miniApp = new TooleapPopOutMiniApp(context, intent);
Tooleap tooleap = Tooleap.getInstance(context);
tooleap.addMiniApp(miniApp);
MyActivity现在将成为可用的任何其他应用程序的顶部浮动窗口小部件。