android 未加载广告时使用空间

2023-12-26

我正在尝试在我的应用程序中添加 admob 广告,但是当我没有连接到互联网时,那里的空间太空了......

我希望添加在加载后出现,直到广告空间应由其余元素利用

该怎么办???

我的活动文件如下 -

MainActivity.java `

package com.testapp.update1;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {
private AdView adView;
GridView grid;
String[] icons = { "Historic Places", "Railway", "City Bus", "Movie",
        "Directory" };

int[] imageID = { R.drawable.ic_historic, R.drawable.ic_train,
        R.drawable.ic_bus, R.drawable.ic_movie, R.drawable.ic_call };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //adding advertisement 
    adView = new AdView(this);
    adView.setAdSize(AdSize.BANNER);
    adView.setAdUnitId(CommanData.AD_UNIT_ID);

    // Add the AdView to the view hierarchy. The view will have no size
    // until the ad is loaded.
    LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1);
    layout.addView(adView);

    AdRequest adRequest = new AdRequest.Builder()
                                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                                .addTestDevice("4963BE445DBBB277")
                                .build();

    // Start loading the ad in the background.

    CustomGrid adapter = new CustomGrid(MainActivity.this, icons, imageID);
    grid = (GridView) findViewById(R.id.icongrid);
    grid.setAdapter(adapter);
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            Toast.makeText(MainActivity.this,
                    "You clicked at " + icons[position] + position,
                    Toast.LENGTH_SHORT).show();

            Intent web = new Intent();
            switch (position) {
            case 0:
                web.setClass(MainActivity.this, Places.class);
                startActivity(web);
                break;
            case 1:
                web.setClass(MainActivity.this, Railway.class);
                startActivity(web);
                break;
            case 2:
                web.setClass(MainActivity.this, BusOptions.class);
                startActivity(web);
                break;
            case 3:
                ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
                if(cd.isConnected()) {
                    web.setClass(MainActivity.this, Movies.class);
                    startActivity(web);
                } else {
                    showConnectivityDialog();
                }
                break;
            case 4:
                Intent intent = new Intent(MainActivity.this,
                        CallDirctory.class);
                startActivity(intent);
            default:
                break;
            }
        }
    });
    // to load add
    adView.loadAd(adRequest);

    // To rate application at google play
    // AppRater.showRateDialog(mContext, editor)
    AppRater.app_launched(MainActivity.this);
}

  @Override
  public void onResume() {
    super.onResume();
    if (adView != null) {
      adView.resume();
    }
  }

  @Override
  public void onPause() {
    if (adView != null) {
      adView.pause();
    }
    super.onPause();
  }

  /** Called before the activity is destroyed. */
  @Override
  public void onDestroy() {
    // Destroy the AdView.
    if (adView != null) {
      adView.destroy();
    }
    super.onDestroy();
  }


public void showConnectivityDialog() {
    AlertDialog.Builder notfoundDialog = new AlertDialog.Builder(MainActivity.this);
    notfoundDialog.setTitle("Not Connected")
            .setMessage("It seems you are not connected to internet")
            .setPositiveButton("Ok", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setIcon(R.drawable.ic_launcher)
            .show();
}
}

保持可见性

LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout1);

即您要添加的布局Adviewto View.GONE最初,它不会占用任何空间。

现在添加一个AdListener to the AdView并进行上述布局View.VISIBLE in the onAdLoaded的方法AdListener。这样,布局将永远不可见,直到Ad已加载。

For eg.

AdListener googleAdListener = new AdListener()
{

    @Override
    public void onAdLoaded()
    {
        super.onAdLoaded();
        try
        {
            (LinearLayout) findViewById(R.id.LinearLayout1).setVisibility(View.VISIBLE);
        }
        catch (Exception e)
        {
            Logger.LogException(e);
        }
    }
};

adView.setAdListener(googleAdListener);

NOTE:您必须使用最新的google-play-services-lib not AdMobsSDK

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 未加载广告时使用空间 的相关文章

随机推荐

  • 使用 Flexbox 将 div 水平和垂直居中

    我正在尝试集中一些div使用 Flexbox 垂直和水平放置 但它没有按预期工作 这是一张图片 说明了我所拥有的和我所期望的 这是代码 div 111111 div div 222222 div div 333333 div EDIT 当然
  • 访问同一包中的私有内部类

    我有两个编译单元 public class OuterClass private static class InnerClass public String test return testing123 public static void
  • 应用内购买:动态添加非消耗品

    我正在开发一个应用程序 用户可以在其中购买数字地图 图表等 我想将这些包含在应用内购买中 问题是我事先不知道会有多少图表 因为我是从网络的另一个来源获取它们的 可能有数百个 我有一个服务器定期从该源获取图表并将其存储在本地 未来可能会出现新
  • Azure CosmosDB:存储过程根据查询删除文档

    目标是输入一个简单的字符串查询 例如 SELECT FROM c WHERE c deviceId device1 并且所有生成的获取文档都需要删除 我发现了关于使用存储过程执行此操作的非常旧的帖子 但我无法让它与 新 用户界面一起正常工作
  • 如何使用 IPython 表示图形

    最近我发现IPython notebook这是一个强大的工具 作为一名 IT 学生 我一直在寻找一种用 Python 表示图形的方法 例如 我想知道是否有一个图书馆 例如numpy or matplotlib 从中可以得出 1 3 2 2
  • JPA 中的瞬态字段和查询中的设置

    我们如何从选择查询中加载 JPA 中的瞬态字段 例如我有这个查询 SELECT table1 SELECT SUM field from table2 WHERE theField table1 flag as total FROM tab
  • 为什么 C# 中某些迭代器比其他迭代器更快?

    有些迭代器速度更快 我发现这一点是因为我收到鲍勃 塔博尔 Bob Tabor 的来信9频道 http channel9 msdn com 永远不要复制和粘贴 我习惯于这样做来设置数组值 testArray 0 0 testArray 1 1
  • 如何在行为测试.feature 文件的示例表中使用管道字符?

    我有一个行为场景大纲 我需要使用管道字符 作为示例表中的单元格值 但我不知道如何转义这个字符 以免被视为列分隔符 我越来越Malformed table当我尝试使用时出错 顺序 据我所知 从 1 2 5 版本 发布时的当前版本 开始 不可能
  • 如何在函数中编写函数(list_map)

    你好 我最近问了一些关于C中链表的问题 链接是在这里找到的 https stackoverflow com questions 2106691 c issue cant figure how to assign pointer to beg
  • 何时以及为何使用一组 Executor

    我一直在阅读 Android 文档中有关 Executor 的内容 如果我理解正确的话 它用于多线程管理 并且它会为您完成一些工作 例如在需要时生成新线程 或者您可以选择自己管理事情 在下面的示例中 使用一组执行器而不是一个执行器 所以它就
  • 如何在Python中更新字典中键的值?

    我有一本代表书店的字典 键代表书名 值代表当前书籍的份数 当书籍从商店出售时 书籍的册数必须减少 我编写了一个代码来减少已售书籍的副本数量 但是在更新后打印词典时 我得到的是初始词典 而不是更新后的词典 n input Enter numb
  • 使用端口 Ping ip,不返回任何内容,PHP/APACHE

    我正在使用以下命令来获取 IP 或域的状态 我如何 ping 端口 80 提供端口后 根本不返回任何内容 尝试通过 80 和 80 将其添加到末尾 任何想法表示赞赏 如果您想要了解给定主机是否接受端口 80 上的 TCP 连接 您可以这样做
  • Android Studio 找不到 AndroidManifest.xml

    我正在使用 Android Studio v0 2 x 我刚刚创建了一个具有默认设置的新应用程序 File gt 新项目 gt 然后一步步进行 当我构建它时 它失败了 日志是 Android 源生成器 MyApplication Andro
  • Maven 版本控制和发布 GIT 存储库

    我在一个 GIT 存储库中有多个 Maven 项目 我想对 Maven 项目执行单独的发布 将发布版本推送到 Nexus 跳过标记并增加快照和提交 使用的 Maven 发布目标 release clean release prepare r
  • Android - 无法打开 zip 存档

    我正在从网络下载 apk 文件并将其存储到 Context getCacheDir 中 我正在通过 HttpURLConnection 下载文件 我实际上并没有询问代码 它完全正常工作 所以我不会将其发布在这里 我成功启动下载 文件被下载到
  • 将频率表合并到单个数据框中

    我有一个列表 其中每个列表项都是一个词频表 该表是通过在不同的示例文本上使用 table 而派生的 因此 每个表的长度不同 我现在想将列表转换为单个数据框 其中每列都是一个单词 每行都是示例文本 这是我的数据的虚拟示例 t1 lt tabl
  • RSpec 错误“未初始化常量 FactoryGirl(名称错误)”

    我尝试运行 RSpec 测试 rspec comments rb 但不断收到相同的错误 见标题 在有人问之前我已经添加了require factory girl到spec helper rb 的内容spec factories commen
  • 为什么我无法在 Raspberry Pi 上安装任何带有 GHC 7.8.4 的软件包?

    根据这个帖子 http www reddit com r haskell comments 35bw0b at last debian unstable has working arm ghci and 终于有一个支持模板 haskell
  • ASP.Net MVC 3.0 Ajax.ActionLink Onbegin 函数 true 执行操作?

    我有一个 Ajax Action 链接 它将调用一个 action 方法 在我的 Ajax 选项中 我调用了一个验证函数 如果这个函数返回 true 那么只有我想要执行此操作 不知道如何完成此操作 我的 Ajax ActionLink Aj
  • android 未加载广告时使用空间

    我正在尝试在我的应用程序中添加 admob 广告 但是当我没有连接到互联网时 那里的空间太空了 我希望添加在加载后出现 直到广告空间应由其余元素利用 该怎么办 我的活动文件如下 MainActivity java package com t