使用andEngine CropResolutionPolicy时如何在屏幕底部准确显示admob smartbanner

how to display admob smartbanner exactly on the bottom of the screen while using andEngine CropResolutionPolicy

所以这是交易。我在 andEngine 中制作游戏并使用 CropResoltionpolicy(工作原理:http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html)。我将引擎摄像头水平设置为 480x800。但设备分辨率为 1920x1080。在我的游戏中,屏幕的顶部和底部是溢出的设备屏幕(请参阅前面的 link,红色矩形如何溢出到屏幕的左侧和右侧)。因此,当我添加直接从顶部开始的横幅(与主游戏 activity 布局的顶部对齐)时,它会部分隐藏。只需使用“.setY()”,我就可以轻松地将横幅向下移动一点,但这在具有不同屏幕的其他设备上无法正常工作。所以我要寻找的是一种将横幅始终设置在设备屏幕顶部或底部的方法,而不是游戏 view/layout 因为它们不一样。

我用来展示广告的代码:

@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);

}

我的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>

如果你想得够多,看起来答案很简单:

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

其中 480 是 andEngine 中相机的高度,50 是横幅的高度。