2013-06-18 5 views
1

J'ai une question massive pour demander que je suis vraiment coincé sur ce sujet et il serait créer d'obtenir des annonces sur mon application gratuite, ok d'abord je suis ce livreAndroid AdMob sans XML

À partir des jeux Android 2011

http://www.apress.com/9781430230427 

maintenant, ce livre met en œuvre un cadre de jeu très agréable et simple que j'utiliser (une version plus simple peut être trouvée ici

http://www.kilobolt.com/day-5-the-android-game-framework-part-i.html 

maintenant, ce cadre n'utilise pas typ e de fichier XML quoi que ce soit, il utilise un framebuffer pour dessiner des choses sur l'écran. maintenant lorsque l'application est d'abord commencé, c'est la première méthode appelée qui est dans le AndroidGame.java

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    boolean isPortrait = getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; 
    int frameBufferWidth = isPortrait ? 480: 800; 
    int frameBufferHeight = isPortrait ? 800: 480; 
    Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth, 
      frameBufferHeight, Config.RGB_565); 

    float scaleX = (float) frameBufferWidth 
      /getWindowManager().getDefaultDisplay().getWidth(); 
    float scaleY = (float) frameBufferHeight 
      /getWindowManager().getDefaultDisplay().getHeight(); 

    renderView = new AndroidFastRenderView(this, frameBuffer); 
    graphics = new AndroidGraphics(getAssets(), frameBuffer); 
    fileIO = new AndroidFileIO(this); 
    audio = new AndroidAudio(this); 
    input = new AndroidInput(this, renderView, scaleX, scaleY); 
    screen = getInitScreen(); 

    setContentView(renderView); 

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyGame"); 
} 

Où ici que je pourrais essayer de mettre en œuvre la bannière AdMob? Aussi c'est ce qu'une classe d'écran ressemble

public LogoScreen(Game game) 
{ 
    super(game); 
} 

@Override 
public void update(float deltaTime) 
{ 
    Graphics g = game.getGraphics(); 
    List<TouchEvent> touchEvents = game.getInput().getTouchEvents(); 

    int len = touchEvents.size(); 

    for(int i = 0; i < len; i ++) 
    { 
     try 
     { 
      TouchEvent event = (TouchEvent) touchEvents.get(i); 
      if(event.type == TouchEvent.TOUCH_DOWN) 
      { 
       game.setScreen(new MainMenuScreen(game)); 
      } 
     } 
     catch(IndexOutOfBoundsException io) 
     { 

     } 
    } 

} 

@Override 
public void paint(float deltaTime) 
{ 
    Graphics g = game.getGraphics(); 
    g.drawImage(Assets.logoScreen, 0, 0); 
} 

@Override 
public void pause() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void resume() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void dispose() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void backButton() 
{ 
    android.os.Process.killProcess(android.os.Process.myPid()); 
} 

Si je voulais afficher une annonce AdMob dans le Logoscreen ce que je pourrais faire cela fonctionnerait? Je suis vraiment confus sur la façon dont je peux mettre en œuvre AdMob dans ma demande, si quelqu'un peut briller un peu de lumière à ce sujet ou me aider, ce serait génial :)

Merci

Toile

--- mise à jour --- Voici le code pour le FastRenderView

package com.CC.framework.implementation; 

//Imports 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Rect; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class AndroidFastRenderView extends SurfaceView implements Runnable 
{ 
//Variables 
AndroidGame game; 
Bitmap framebuffer; 
Thread renderThread = null; 
SurfaceHolder holder; 
volatile boolean running = false; 

public AndroidFastRenderView(AndroidGame game, Bitmap framebuffer) 
{ 
    super(game); 
    this.game = game; 
    this.framebuffer = framebuffer; 
    this.holder = getHolder(); 

} 

public void resume() 
{ 
    running = true; 
    renderThread = new Thread(this); 
    renderThread.start(); 
}  

public void run() 
{ 
    Rect dstRect = new Rect(); 
    long startTime = System.nanoTime(); 
    while(running) 
    { 
     if(!holder.getSurface().isValid()) 
     { 
      continue;   
     } 

     float deltaTime = (System.nanoTime() - startTime)/10000000.000f; 
     startTime = System.nanoTime(); 

     if (deltaTime > 3.15) 
     { 
      deltaTime = (float) 3.15; 
     } 


     game.getCurrentScreen().update(deltaTime); 
     game.getCurrentScreen().paint(deltaTime); 

     Canvas canvas = holder.lockCanvas(); 
     canvas.getClipBounds(dstRect); 
     canvas.drawBitmap(framebuffer, null, dstRect, null);       
     holder.unlockCanvasAndPost(canvas); 

    } 
} 

public void pause() 
{       
    running = false;       
    while(true) 
    { 
     try 
     { 
      renderThread.join(); 
      break; 
     } 
     catch (InterruptedException e) 
     { 
      // retry 
     } 

    } 
}  


} 
+0

je suppose qu'il s'agit de 'AndroidFastRenderView' puisque c'est ce qui est passé à' setContentView' – DevZer0

+0

J'ai mis à jour mon poste avec le code FastRenderView – Canvas

+0

FastRenderView est l'extension de 'SurfaceView' voici un lien http: // stackoverflow .com/questions/10505185/how-to-show-admob-in-surfaceview – DevZer0

Répondre

2

Créer un conteneur de mise en page et mettre le AdView et RenderView en elle:

RelativeLayout layout = new RelativeLayout(this); 
AdView adView = new AdView(this, AdSize.BANNER, "a151bf25136cf46"); 
layout.addView(renderView); 
layout.addView(adView); 
setContentView(layout); 
adView.loadAd(new AdRequest()); 
+0

serait-ce un fichier xml dans le dossier res? – Canvas

+0

Vous pouvez créer ceci directement dans le code. Essayez de remplacer 'setContentView (renderView);' dans votre code avec le code ci-dessus. Vous devrez peut-être jouer avec les paramètres de mise en page pour obtenir une apparence parfaite, mais cela placera une bannière au-dessus de votre rendu. –

+0

Aahh ok acclamations mate, je vais essayer que bientôt applaudissements – Canvas