Наложение макета Android на вид поверхности - PullRequest
6 голосов
/ 18 октября 2010

Я разрабатываю простую игру для Android, используя вид поверхности, подобный образцу Lunar Lander, предоставленному Google. Я хочу, чтобы на экране появлялись различные вещи, такие как рекорды, сообщения, меню и т. Д., А вид поверхности по-прежнему на заднем плане.

Проблема в том, что я хочу, чтобы «всплывающие окна» содержали много элементов дизайна, таких как изображения, текстовые поля и т. Д. Есть ли способ, с помощью которого я могу создать макет в XML для создания нужного всплывающего окна и затем отобразить его поверх представление поверхности как одного объекта вместо того, чтобы создавать каждый отдельный элемент в коде и рисовать их все на холсте?

Я хочу анимировать всплывающие окна со стороны экрана, поэтому было бы хорошо, если бы я разработал макет в XML, чтобы все объекты знали свое отношение друг к другу, а затем анимировали этот макет как один объект.

Мне кажется, что-то довольно простое, но я просто не могу найти, как этого достичь.

Ответы [ 2 ]

6 голосов
/ 18 октября 2010

Вы можете накладывать элементы поверх SurfaceView либо в коде, либо в макетах XML.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
<android.view.SurfaceView
        android:id="@+id/mysurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
</android.view.SurfaceView>
</FrameLayout>

А в твоей деятельности:

TextView myText = new TextView(this);
myText.setText("Something");
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

Не знаю о проблемах с производительностью.

3 голосов
/ 18 октября 2010

Простой способ сделать это - создать всплывающий интерфейс в качестве другого занятия. Затем вы бы задали ему прозрачную фоновую тему, например тему диалога, в вашем файле манифеста.

Посмотрите образцы CustomDialog, Translucent и TranslucientBlur в демонстрационных версиях API. Они создают такие мероприятия. Тот факт, что основная деятельность находится на поверхности, не должен ничего менять.

...