【问题标题】:Resize/show/hide adview from another view从另一个视图调整大小/显示/隐藏广告视图
【发布时间】:2015-03-03 22:10:05
【问题描述】:

我正在开发一个简单的游戏,它有一些游戏状态(暂停、播放、玩家迷路等)。我正在尝试显示这样的 adview(admob):

paused -> Show ad as banner.
playerlost -> show as fullscreen.
playing -> hide the ad.

主活动:

public class MainActivity extends Activity{
    private tGame game;
    //(...)
    layout.addView(game);
    layout.addView(admob, adParams);
    setContentView(layout);
    //(...)
}

另一种观点(tGame):

public class tGame extends View implements Runnable{
    //(...)
    int gameState = 0; // <- PLAYING, PAUSED, PLAYERLOST, etc.
    //(...)
}

如何从另一个视图(游戏)调整广告(admob)的大小?

【问题讨论】:

    标签: android layout resize admob


    【解决方案1】:

    您可以使用可见性标志来显示/隐藏广告并为全屏广告启动插页式广告:

    if(paused)
      adview.setVisibility(View.VISIBLE);
    else if(playerlost)
     interstitialAd.show();
    else if(playing)
      adview.setVisibility(View.INVISIBLE);
    

    更新:

    要从另一个类修改广告,您可以使用外观:

    定义一个接口,例如 MyAdListener.java:

    public interface MyAdListener{
    public void showAd();
    public void hideAd();
    public void lauchFullScreenAd();
    }
    

    在您游戏的主要活动中,实现接口:

    public class MainActivity extends Activity implements MyAdListener{
        private tGame game;
        //(...)
        layout.addView(game);
        layout.addView(admob, adParams);
        setContentView(layout);
    //(...)
    
    @Override
    public void showAd(){
    runOnUiThread(new Runnable() {
       @Override
       public void run(){
          adview.setVisibility(View.VISIBLE);
       }
      );
     }
    
    @Override
    public void hideAd(){
    runOnUiThread(new Runnable() {
       @Override
       public void run(){
          adview.setVisibility(View.INVISIBLE);
       }
      );
    
    }
    
    
    
     @Override
        public void launchFullScreenAd(){
        runOnUiThread(new Runnable() {
           @Override
           public void run(){
              if (interstitial != null) interstitial.show();    
           }
          );
         }
    
    
    }
    

    最后在你的游戏中:

    public class tGame extends View implements Runnable{
        MyAdListener myAdListener;
        public tGame(Context context){
        myAdListener = (MyAdListener)context;
        }
        //(...)
        int gameState = 0; // <- PLAYING, PAUSED, PLAYERLOST, etc.
        //(...)
    
       if(paused)
          myAdListener.showAd();
        else if(playerlost)
          myAdListener.launchFullScreenAd();
        else if(playing)
          myAdListener.hideAd();
    
    }
    

    【讨论】:

    • 好的,但是游戏状态变量(暂停、播放等)属于不同的类。
    • 您可以将它们设为静态变量并在您的主要活动(定义广告的位置)中访问它们。如果您需要帮助,请告诉我:)
    • 好的。您可以使用侦听器来实现这一点。只需确保使用 runOnUIThread() 方法在 UI 线程中进行调用。检查我的更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2011-10-15
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多