0

ゲームにAdMobを実装しましたが、ゲームではサーフェスビューを使用してグラフィックを表示しています。

サーフェスビュー内からAdMobビューに「アクセス」するにはどうすればよいですか?

編集2:

コールバックを実装しようとしました:

MainActivity.class

interface AdMobInterface {
public void HideAd();
public void ShowAd();
}

public class MainActivity extends Activity implements AdListener {

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

    layout = new RelativeLayout(this);
    engine = new Engine(this);
    layout.addView(engine);

    if(engine.IsDemoVersion) {
        SetupAdMob();
    }

    setContentView(layout);

}


public void ShowAd() {
         ///Execute this from Engine.class
}

public void HideAd() {
          ///Execute this from Engine.class 
}

private void SetupAdMob() {
    String AdMobPublisherID = "XXXXXXXXXX";
    adView = new AdView(this, AdSize.BANNER, AdMobPublisherID);
    RelativeLayout.LayoutParams params = new    RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    layout.addView(adView, params);
    layout.bringChildToFront(layout.getChildAt(1));
    adView.loadAd(new AdRequest());
}


}

Engine.class

  public class Engine extends SurfaceView implements
    SurfaceHolder.Callback, SensorEventListener, AdMobInterface {

AdMobInterface AdMob;

  public Engine(Context context, AdMobInterface admob) {
    super(context);


   AdMob = admob;

 }


 }
4

1 に答える 1

0

FrameLayoutサーフェスビューの上に追加を使用して表示します。このようなもの:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">
    <SurfaceView android:layout_width="fill_parent"
                 android:layout_height="fill_parent" />
    <AdView id="@+id/ad" 
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent" />
</FrameLayout>

次に、IDでAdViewを見つけて、親レイアウトから削除するだけです。

View adView = findViewById(R.id.ad);
FrameLayout root = (FrameLayout)findViewById(R.id.root);
root.removeView(adView);

アクティビティ内からこれを行うのが最善です。「エンジン」が広告やレイアウトについて知る必要はありません。

于 2012-05-22T07:08:25.240 に答える