我一直有一些问题需要了解我的应用/设备的视图层次结构(因为我的应用程序的启动画面存在一些问题)。
基本上,我的应用程序是一个openGL ES 2.0游戏,并具有以下元素:
我正在做的就是:
创建我的布局
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时,我看到以下内容:
从上面的图片可以看出,我的应用程序有 RelativeLayout ,这是我在代码中创建的布局(见上文)。然后将其添加到 FrameLayout ,其资源ID为 android:id / content 。
我已经从Play商店下载了3个应用并检查了他们的布局,并且他们的所有视图都在正下方 FrameLayout 列出。
我的问题是这个 FrameLayout 到底是什么?如何直接访问它并将我的观点(主应用,横幅广告,启动画面)添加到它?
我环顾四周,我读过的所有内容都没有真正回答我的问题。
答案 0 :(得分:4)
这是一个活动的根视图,可以像这样获取:
FrameLayout frame = (FrameLayout) findViewById(android.R.id.content);