0

在我的应用程序中,我想创建一个浮动视图,它将在与当前正在进行的活动无关的地方(由我选择,但可以在屏幕上的任何地方)显示。下面的活动仍然是可触摸的(并且具有焦点),并且该视图仅在每次显式触摸时才被触摸。

此外,当用户从一个活动移动到另一个活动时,只要他在应用程序中,就应该保持浮动视图。

见下图。

我的目标是,当某件事发生时,我希望这个浮动视图显示几秒钟,用户可以在其中按下它,或者按 X 将其关闭(这意味着它将具有自定义布局)。 .

实现这一目标的最佳方法是什么?

我的目标是 4.0.x* 及更高版本。

  • x > 1

在此处输入图像描述

4

2 回答 2

0

我认为最好的方法是使用片段而不是活动。您的浮动视图将设置在您的FragmentActivity. 这样,您可以将其设置在片段容器上方(在 xml 中的容器之后声明您的浮动视图)。然后使用fragmentTransaction动画来切换片段,就像它是活动一样。

如果不清楚,或者您是否只能使用活动而不是片段,请告诉我。

于 2013-11-07T15:17:48.983 回答
0

我相信您可以将浮动视图添加到根内容视图中,然后在完成后将其删除。您可以通过调用获取活动内的根内容视图

ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);

所以它可能看起来像这样:

protected void showPopup(View view) {
    view.setId(POPUP_VIEW_ID);
    ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);
    rootGroup.addView(view);
}

protected void removePopup() {
    ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);
    int i = 0;
    while(i < rootGroup.getChildCount()) {
        if(rootGroup.getChildAt(i).getId() == POPUP_VIEW_ID) {
            rootGroup.removeViewAt(i);
        } else {
            i++;
        }
    }
}

这些方法可能在 BaseActivity 类中运行良好。

于 2013-12-03T08:20:35.313 回答