通过几个活动使视图浮动

时间:2013-11-07 15:10:16

标签: android android-gui

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

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

见下图。

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

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

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

  • x> 1

enter image description here

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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类中很好用。