在WindowManager中显示可以来自“屏幕外”的视图

时间:2014-06-27 17:52:01

标签: android android-animation android-windowmanager

我遇到了以下问题 - 我有一个视图,我正在放入WindowManager 我希望它可以从屏幕外转到屏幕中间。

不幸的是,无论我做什么,视图都坚持轴。

这是代码:

    view = (FrameLayout) LayoutInflater.from(this).inflate(
            R.layout.poke, null);

    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            300, 400, WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

    params.verticalMargin = -10f;
    params.gravity = Gravity.TOP;

    windowManager.addView(view, params);

正如你所看到的,我尝试使用边距(放在那里减去它以使其上升)。

顺便说一下 - 我知道在dimen.xml中输入数字而不是dp是很难看的。它只是一个测试代码..

2 个答案:

答案 0 :(得分:11)

我刚遇到同样的问题,实际的标志是:

WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

所以你的代码应该是这样的:

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        300, 400, WindowManager.LayoutParams.TYPE_PHONE,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        PixelFormat.TRANSLUCENT);

答案 1 :(得分:-1)

在您指定的标志中,添加另一个标志FLAG_LAYOUT_NO_LIMITS

这应该允许您将视图放在屏幕之外。

您的代码应如下所示:

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
     300, 400, WindowManager.LayoutParams.TYPE_PHONE,
     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
     PixelFormat.TRANSLUCENT);