Android openGl egy layout-ban

Android openGl egy layout-ban
2009-09-01T23:11:37+02:00
2009-09-03T19:42:18+02:00
2022-11-14T21:45:43+01:00
gdoki
Üdv!

Annyi lenne a kérdés, hogy hogyan lehet egy RelativeLayout-ban úgy opengl Ablakot elhelyezn, hogy amit megadtam a layout xml - ben megmaradjon. Pontosabban egy subLayoutba kellene belerakni. Ha ez nem lehetséges, akkor hogyan nyithatnék kis canvasokat egy opengl ablak fölé es akkoe képekkel oldanám meg a gombokat. De az első lenne ideális.

Üdv! És előre is köszönöm!
Mutasd a teljes hozzászólást!
Egy lehetséges megoldás:

layout.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/LinearLayout02" android:layout_below="@+id/LinearLayout01" android:layout_width="wrap_content"> </LinearLayout> </RelativeLayout>

onCreate:

setContentView(R.layout.layout); LinearLayout linearLayout = (LinearLayout)findViewById(R.id.LinearLayout02); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); GLSurfaceView surfaceView = new GLSurfaceView(this); linearLayout.addView(surfaceView, params);
Mutasd a teljes hozzászólást!

  • Írd le hogy próbáltad és megmondom hogyan kéne. :)
    Egyébként a RelativeLayout-nál minen komponensnél meg kell határozni hogy mihez képest kell elhelyezkednie. Szerintem itt hagytál ki valamit, de majd okosabb leszek ha bemásolod az eddig elkészített xml-t.
    Mutasd a teljes hozzászólást!
  • Sublayout-ot meg egyszerűen tudsz készíteni:

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/relative_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/sublayout" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true"> </LinearLayout> </RelativeLayout>

    Egyébként ha eclipse-t használsz, javaslom hogy töltsd le a plugint (Installing the ADT Plugin for Eclipse) ha még nem tetted meg, mert ott van vizuális layout szerkesztő is.
    Mutasd a teljes hozzászólást!
  • :) aszt hiszem félreértettek. Valóban eclipset használok és van adt-m. A program már fájlokat tölt le a netről xml-t fejt vissza adatbázist használ...ezekkel nincs is gondom.

    A problém az hogy adott egy layout xml pl.:

    <RelativeLayout ...> <LinearLayout...> ... </Linearlayout> <LinearLayout android:id="@+id/openGLCont" ...> ... </Linearlayout> </RelativeLayout>

    Nos itten az openGLCont-ba szeretnék egy openGLSurface-t beledobni. És itten vagyok elakadva.

    mGLSurfaceView = new GLSurfaceView(this);
    setContentView(mGLSurfaceView);

    a setContentView helyett kellene valami .(meg a a this helyett)
    Mutasd a teljes hozzászólást!
  • Szia!

    Az mGLSurfaceView = new GLSurfaceView(this); nekem jónak tűnik, nincs vele semmi baj. A setContentView(mGLSurfaceView); viszont már nem.
    Készítettél ugye egy "sajat_layout.xml"-t. Ennek a címe benne van az R.java állományban, amit a plugin generál automatikusan. Ennek kéne lennie a content view-nak:

    setContentView(R.layout.sajat_layout);

    Ha a GLSurfaceView-t a layout.xml-ben definiálod, akkor a
    mGLSurfaceView = new GLSurfaceView(this);
    helyett
    mGLSurfaceView = (GLSurfaceView)findViewByID(R.id.surfaceView);
    utasítással kapod meg a referenciát (persze ehhez a layout.xml-ben meg kell adni az ID-t).
    Hozzáadhatod kódból is, de akkor a layout referenciáját kell elkérned a fent említett módon és ahoz adod hozzá.
    Mutasd a teljes hozzászólást!
  • Egy lehetséges megoldás:

    layout.xml
    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout> <LinearLayout android:layout_height="wrap_content" android:id="@+id/LinearLayout02" android:layout_below="@+id/LinearLayout01" android:layout_width="wrap_content"> </LinearLayout> </RelativeLayout>

    onCreate:

    setContentView(R.layout.layout); LinearLayout linearLayout = (LinearLayout)findViewById(R.id.LinearLayout02); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); GLSurfaceView surfaceView = new GLSurfaceView(this); linearLayout.addView(surfaceView, params);
    Mutasd a teljes hozzászólást!
  • Nagyon szépen köszönöm!!!
    Működik!!!!

    Megy a pötty!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd