1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Admob-Werbung anzeigen ohne XML

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von manu, 23.12.2009.

  1. manu, 23.12.2009 #1
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Hallo,
    ich habe eine Anwendung, die kein XML-Layout verwendet. Alles wird direkt mit onDraw selber erstellt.
    Aber ich habe keine Ahnung, wie ich da jetzt die AdMob-Werbung einbinden kann. Hat da jemand eine Lösung für mich?


    Gruß Manu
     
  2. ko5tik, 23.12.2009 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Genau so wie ein anderes Widget.

    Klasse ist: com.admob.android.ads.AdView

    Es hat die übliche Konstruktoren:

    public AdView(Context context)
    public AdView(Context context, AttributeSet attrs)
    public AdView(Context context, AttributeSet attrs, int defStyle)

    Wo genau liegt das Problem?
     
  3. manu, 23.12.2009 #3
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    In meinem Code übernimmt einen eigene Klasse das Aussehen.
    Code:
    setContentView(new Panel(....))
    Mittels Canvas und SurfaceHolder wird das Display mit Inhalt gefüllt. Es handelt sich um ein Spiel, daher waren XML-Layouts unmöglich.

    Ich habe nun testweise folgendes eingebaut:
    Code:
    AdView ad = new AdView(this);
    ad.layout(...);
    Leider bekomme ich die Werbung nicht angezeigt.
    Muss ich in mein Canvas irgendwie eine View einbauen.

    Ich stehe gerade auf dem Schlauch.
     
  4. ko5tik, 23.12.2009 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Wieso denn? Ich habe auch eine Spiel, und da geht es
    ( mit dem nächsten stehe ich aber auch auf dem Schaluch ;) )

    Lines Game | SlideME
    Schau mal in dem Logcat - es kann gut sein, das keine Ad zugewiesen wurde,
    aber die Kommunikation mit dem Logcat musst du sehen

    Vielleicht ist was mit den Layout-Attributen nicht in Ordnung ( wieight / width / height )
     
  5. manu, 23.12.2009 #5
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Im LogCat steht dazu nichts.

    Ich vermute fast, dass es daran liegt, dass ich gar kein Layout oder View habe. Ich male das Bild ja komplett selber und gebe es aus.

    Wie bekomme ich über dieses Bild eine View? Denn in diese View könnte ich die Werbung packen.
     
  6. ko5tik, 23.12.2009 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Was hinder dich daran, doch ein XML-Layout zu machen?

    Dann nimmst du halt einen linearen Layout:
    Code:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
            >
       <!-- 
        hier komm deine tollde KOmponente die du selber zeichnest,
        oder noch was kompliziertes
         -->
        <!-- admob ad panel -->
        <com.admob.android.ads.AdView
                android:id="@+id/ad"
                android:visibility="visible"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                />
    </LinearLayout>
    
    
    Dann machst du halt setContentView mit dem Resource, und deine tolle selbstzeichnende
    Komponente ( abgeleitete SurfaceView? ) kannst du über ID referenzieren.

    PS: dies ist copy-paste aus funktionierenden AdMob einbettung
     
  7. manu, 24.12.2009 #7
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Der Tipp ist schonmal gut. Ich soll eine eigene View-Klasse schreiben, die ich dann einfach im XML einbinden. In den Android-Docs nennt sich das Custom-Elements.

    Hast du mir noch einen kleinen Tipp für die Klasse, wie die aussehen muss. Habe nichts Vernünftiges finden könne.
     
  8. ko5tik, 24.12.2009 #8
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Hat dein Spiel einen Update-Thread ( Ablauf ist zeitgesteuert ) oder reagiert es nur auf
    Benutzereingaben?
    Falls ja, heißt deine Basis-Klasse SurfaceView (oder ein anderes SurfaceHolder ) - da du nicht auf deine Widgets aus dem eigene Thread zugreifen kannst.

    Einfach von dieser Klasse ableiten, und ein Game-Thread implementieren. EIn Gutes Beispiel wäre das LunarLander-Spiel ( gibt es in SDK als Sample )

    Ich persönlich ziehe es vor, eine State-Machine, die das Spiel steuert separat zu programmieren, und es auf eine (Vanilla-)Surface zugreifen zu lassen.

    Und Activity übernimmt die Interaktion mit dem Umgebung. (Menus, Ansteuern von
    Laden und Speichern, usw. )
     
  9. manu, 24.12.2009 #9
    manu

    manu Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Danke. Mit dem Lunar-Lander-Code habe ich es nun geschafft.
     
  10. Avoider, 04.06.2010 #10
    Avoider

    Avoider Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    0
    Registriert seit:
    17.02.2010
    Hey alle zusammen!

    Habt ihr nach dem Update vom Admob SDK auch Probleme damit die Ads ohne XML anzuzeigen? Was vorher mit einfachem AdView() ging zeigt nun nichts mehr an.

    Wäre dankbar wenn jemand einen Rat hat :)
     

Diese Seite empfehlen