У меня есть приложение с SurfaceView и MapView. Они отображаются в одном виде, например:Композиция Android MapView и SurfaceView
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="XXXXXXXXredactedXXXXXXXXXXXXx"
/>
<class.that.extends.SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000"
/>
</RelativeLayout>
Обратите внимание, что MapView поставляется перед SurfaceView. Из-за этого MapView рисуется «под» SurfaceView, и все, что я вижу, - это черный фон, с тем, что я рисую на SurfaceView. Если я поменяю порядок и сначала поместите SurfaceView в файл, а MapView - второй, MapView будет нарисован, и ни один из SurfaceView не покажет.
Согласно SurfaceView Javadoc:
Поверхность Z упорядочены таким образом, что за окном держа его SurfaceView; SurfaceView пробивает отверстие в своем окне, чтобы его поверхность отображалась. Иерархия представлений позаботится о правильной компоновке с Поверхностью любых братьев и сестер SurfaceView, которые обычно появляются поверх нее.
Для меня это означает, что я должен иметь возможность перенести SurfaceView в первую очередь в файл и пропустить «MapView» и показать, что у него есть. Но, как бы то ни было, они кажутся двумя видами, и только один из них виден одновременно.
После размышления: Я попытался установить фон на # 00000000 так, чтобы альфа фона была нулевой (то есть прозрачной), но она не имеет никакого эффекта.