2015-03-29 2 views
0

Alors voici l'affaire. Je fais un jeu dans andEngine et j'utilise CropResoltionpolicy (comment cela fonctionne: http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html). J'ai un appareil-photo de moteur réglé en tant que 480x800 dans l'orientation horizontale. mais la résolution des appareils est 1920x1080. Dans mon jeu, les parties supérieure et inférieure de l'écran sont des écrans qui débordent (voir le lien précédent, comment les rectangles rouges débordent à gauche et à droite de l'écran). Donc, quand j'ajoute une bannière qui commence directement en haut (alignée sur le haut de la mise en page principale de l'activité de jeu), elle est partiellement hiddden. Je peux facilement déplacer la bannière un peu plus bas en utilisant '.setY()' mais cela ne fonctionne pas correctement sur d'autres appareils avec des écrans différents. Donc, ce que je cherche est une méthode pour définir la bannière toujours en haut ou en bas de l'écran des périphériques, pas la vue/mise en page du jeu, car ils ne sont pas les mêmes.comment afficher admob smartbanner exactement sur le fond de l'écran lors de l'utilisation etEngine CropResolutionPolicy

Mon code que j'utilise pour afficher des annonces:

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

    setContentView(R.layout.activity_main); 

    final DisplayMetrics displayMetrics = new DisplayMetrics(); 
    this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 


    this.adView = new AdView(this); 
    this.adView.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER); 
    this.adView.setAdUnitId("myAdId"); 
    com.google.android.gms.ads.AdRequest adrequest = new com.google.android.gms.ads.AdRequest.Builder().addTestDevice(com.google.android.gms.ads.AdRequest.DEVICE_ID_EMULATOR).build(); 
    this.adView.setY(displayMetrics.heightPixels - this.adView.getHeight()); // here I set position of my banner, but it does not work properly 

    this.adView.loadAd(adrequest); 

    RelativeLayout layout = (RelativeLayout)findViewById(R.id.relativeLayout); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 


    layout.addView(this.mRenderSurfaceView); 

    layout.addView(this.adView, params); 

} 

Mon main_activity.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id ="@+id/relativeLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 

android:layout_gravity="center" 
android:gravity="center" 

tools:context="com.hsdev.salesrep.MainActivity" > 

</RelativeLayout> 

Répondre

0

On dirait réponse est assez facile si vous pensez assez:

final DisplayMetrics displayMetrics = new DisplayMetrics(); 
this.adView.setY(displayMetrics.heightPixels - (this.adView.getHeight() * (displayMetrics.heightPixels/480)) - 50); 

où 480 est une hauteur de caméra dans andEngine et 50 est une hauteur de votre bannière.