如何在android:id / content中直接向FrameLayout添加元素?

时间:2015-01-16 21:14:30

标签: android android-layout android-view glsurfaceview

我一直有一些问题需要了解我的应用/设备的视图层次结构(因为我的应用程序的启动画面存在一些问题)。

基本上,我的应用程序是一个openGL ES 2.0游戏,并具有以下元素:

  • Splashscreen的视图(这是标准的Android视图)
  • 主应用程序的视图(这是一个GLSurfaceView)
  • 资源在后台加载(在AsyncTask中)

我正在做的就是:

创建我的布局

 layout = new RelativeLayout(this);
 layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

添加我的GLSurfaceView和Splashscreen

 layout.addView(myGLView);
 layout.addView(splashscreen);  //loads resources on an AsyncTask

删除启动画面

当所有内容都已加载并准备好后,我只需移除Splashscreen即可显示下面的GLSurfaceView:

 layout.removeView(splashscreen);

在检查我的应用程序的视图heirarchy时,我看到以下内容:

- 我的应用的观点

enter image description here

- 其他应用的观点

enter image description here

从上面的图片可以看出,我的应用程序有 RelativeLayout ,这是我在代码中创建的布局(见上文)。然后将其添加到 FrameLayout ,其资源ID为 android:id / content

我已经从Play商店下载了3个应用并检查了他们的布局,并且他们的所有视图都在正下方 FrameLayout 列出

我的问题是这个 FrameLayout 到底是什么?如何直接访问它并将我的观点(主应用,横幅广告,启动画面)添加到它?

我环顾四周,我读过的所有内容都没有真正回答我的问题。

1 个答案:

答案 0 :(得分:4)

这是一个活动的根视图,可以像这样获取:

FrameLayout frame = (FrameLayout) findViewById(android.R.id.content);