在我的应用程序中,我想创建一个浮动视图,该视图将在一个地方显示(由我选择,但可以在屏幕上的任何位置),与当前正在进行的活动无关。下面的活动仍然可以触摸(并且具有焦点),并且只有在每次明确触摸时才会触摸此视图。
此外,只要用户在应用程序中,当用户从活动移动到另一个活动时,应保留浮动视图。
见下图。
我的目标是,当某件事情发生时,我希望这个浮动视图显示几秒钟,用户可以按下它,或按X来关闭它(意味着它将有一个自定义布局)..
实现这一目标的最佳方法是什么?
我的目标是4.0.x *及更高版本。
答案 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类中很好用。