Android启动器上的浮动小部件/覆盖

Android启动器上的浮动小部件/覆盖,android,overlay,Android,Overlay,有人知道如何实现这一点吗 一些例子: 有什么想法吗?谢谢。这是在现有活动的顶部使用覆盖层完成的。您可以在我的网站上找到源代码,以演示android问题中的概念证明,其中有人患有残疾,无法滑动屏幕滚动,正在寻找一种方便的方法,我拼凑了代码,以最小的移动量显示“翻页/翻页”,只需点击覆盖在活动顶部的文本(实际上是一个按钮)。但由于Android和安全机制的工作方式,滚动事件无法注入当前正在运行的活动中 它的工作方式是这样的,在onCreate活动中有这样一个 WindowManager.La

有人知道如何实现这一点吗

一些例子:


有什么想法吗?谢谢。

这是在现有活动的顶部使用覆盖层完成的。您可以在我的网站上找到源代码,以演示android问题中的概念证明,其中有人患有残疾,无法滑动屏幕滚动,正在寻找一种方便的方法,我拼凑了代码,以最小的移动量显示“翻页/翻页”,只需点击覆盖在活动顶部的文本(实际上是一个按钮)。但由于Android和安全机制的工作方式,滚动事件无法注入当前正在运行的活动中

它的工作方式是这样的,在
onCreate
活动中有这样一个

WindowManager.LayoutParams layOutParams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                PixelFormat.TRANSLUCENT);
需要的标志是
WindowManager.LayoutParams.TYPE\u SYSTEM\u OVERLAY
WindowManager.LayoutParams.flag\u WATCH\u Out\u 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
}
float x=event.getX();
float y=event.getY();
如果(x>outrechit.left&&xoutrechit.top&&y
这个简短的摘要解释了如何在任何活动的顶部进行覆盖

只是为了确保代码得到调试,并且不会以任何形式干扰显示的任何活动。例如,如果活动实际上是一个OpenGL游戏,会发生什么情况,您会怎么做


这是为了说明需要注意的事项。

您可能想看看。 它提供了将常规Android活动转换为浮动小部件的最简单方法

例如,假设您有一个名为MyActivity的活动

Intent intent = new Intent(context, MyActivity.class);
TooleapPopOutMiniApp miniApp = new TooleapPopOutMiniApp(context, intent);
Tooleap tooleap = Tooleap.getInstance(context);
tooleap.addMiniApp(miniApp);

MyActivity现在可以作为浮动小部件在任何其他应用程序上使用。

它看起来很有希望,是免费的吗?是开源的吗?