在Android启动浮动窗口小部件/覆盖(Floating widget / Overlay on

2019-06-26 05:17发布

有没有人有任何想法,这可怎么实现的?

一些例子:

  • https://play.google.com/store/apps/details?id=gpc.myweb.hinet.net.PopupVideo
  • https://play.google.com/store/apps/details?id=com.milone.floatwidget

任何的想法? 谢谢。

Answer 1:

即使用在上面覆盖所做的现有活动不管。 您可以在这里找到发现我的源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_OVERLAYWindowManager.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的游戏,会发生什么,你会怎么做?

这是需要说明的被关注什么。



Answer 2:

你可能想看看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现在将成为可用的任何其他应用程序的顶部浮动窗口小部件。



文章来源: Floating widget / Overlay on Android launcher