SurfaceView инициализирован из XML - PullRequest
0 голосов
/ 01 января 2012

По какой-то причине, которую я не понимаю, когда я создаю свой SurfaceView из макета XML, поверхность очищается при каждом обновлении. Но если я просто инициализирую его в коде без XML, нарисованная поверхность сохраняется.

Если я инициализирую SurfaceView следующим образом, при каждом обновлении оно отображается пустым:

app = (App) findViewById(R.id.app);
app.setActivity(this);

Если я инициализирую SurfaceView следующим образом, рисунок поверхности сохраняется при каждом обновлении:

app = new App(this);
setContentView(app);
app.setActivity(this);

Вот макет XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/black"
    android:clickable="true">
        <com.threedtopo.someapp.android.app
            android:id="@+id/app"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/black"
            android:clickable="true" />
</LinearLayout>

Любое понимание будет оценено, спасибо!

Редактировать: это способ инициализации корневого представления в первом примере:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
        <LinearLayout
            android:layout_alignParentTop="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
            <!-- <TextView -->
            <EditText
            android:id="@+id/hidden_text"
            android:inputType="textLongMessage"
            android:autoText="true"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:editable="true"
            android:visibility="gone"
            android:focusable="true"
            android:focusableInTouchMode="true"
            />
        </LinearLayout>
    <ViewSwitcher
        android:id="@+id/switcher"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <ImageView
            android:id="@+id/splash"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/splashscreen" />
        <com.threedtopo.someapp.android.app             android:id="@+id/app"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/white"
            android:clickable="true" />
    </ViewSwitcher> 
    <LinearLayout
        android:id="@+id/keyboard_layout"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboard"
            android:visibility="gone"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_weight="0" />
    </LinearLayout>
</RelativeLayout>

1 Ответ

0 голосов
/ 02 января 2012

Благодаря харизму это было решено. Видимо, установка свойства background в файле XML приводит к тому, что SurfaceView очищается при каждом рисовании.

...