You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中实现RecyclerView第3次点击后展示AdMob插屏广告

实现RecyclerView第3次点击展示AdMob插屏广告

核心思路

通过点击计数+持久化存储控制广告展示时机,既符合AdMob政策,又不影响用户体验:

  • 用SharedPreferences记录点击次数(避免APP重启后计数丢失),也可按需改用内存变量
  • 每次点击递增计数,达到3次时展示预加载的插屏广告,展示后重置计数
  • 广告未加载成功时直接跳转文章,不阻塞用户操作

具体实现步骤

1. 初始化工具与广告预加载

在你的Activity/Fragment中定义相关变量并完成初始化:

// 用于持久化存储点击次数
private SharedPreferences clickPrefs;
private static final String CLICK_COUNT_KEY = "click_count";
// AdMob插屏广告实例
private InterstitialAd mInterstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    // 初始化SharedPreferences
    clickPrefs = getSharedPreferences("AdClickPrefs", MODE_PRIVATE);

    // 预加载插屏广告(替换为你的正式广告ID,测试阶段用AdMob测试ID)
    AdRequest adRequest = new AdRequest.Builder().build();
    InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest,
        new InterstitialAdLoadCallback() {
            @Override
            public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                mInterstitialAd = interstitialAd;
                // 设置广告关闭回调,确保用户关闭广告后再跳转文章
                mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
                    @Override
                    public void onAdDismissedFullScreenContent() {
                        mInterstitialAd = null;
                        navigateToArticle();
                    }

                    @Override
                    public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                        mInterstitialAd = null;
                        navigateToArticle();
                    }
                });
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                mInterstitialAd = null;
            }
        });

    // 初始化RecyclerView和Adapter(原有代码)
    initRecyclerView();
}

2. 修改点击回调逻辑

更新你的Adapter点击监听,加入计数与广告判断逻辑:

adapter = new PostAdapter(new ArrayList<>(), new BtnClick() {
    @Override
    public void btnClick() {
        Log.e("Inter Button Clicked", "Button CLicked");

        // 获取当前点击次数并递增
        int clickCount = clickPrefs.getInt(CLICK_COUNT_KEY, 0);
        clickCount++;
        clickPrefs.edit().putInt(CLICK_COUNT_KEY, clickCount).apply();

        if (clickCount == 3) {
            // 第3次点击,检查广告状态
            if (mInterstitialAd != null) {
                mInterstitialAd.show(YourCurrentActivity.this);
                clickPrefs.edit().putInt(CLICK_COUNT_KEY, 0).apply(); // 重置计数
            } else {
                // 广告未加载完成,直接跳转并重置计数
                navigateToArticle();
                clickPrefs.edit().putInt(CLICK_COUNT_KEY, 0).apply();
            }
        } else {
            // 非第3次点击,直接跳转文章
            navigateToArticle();
        }
    }
});

3. 定义文章跳转方法

把原来的文章跳转逻辑封装成独立方法,复用代码:

private void navigateToArticle() {
    // 这里替换为你的文章详情页跳转逻辑
    Intent intent = new Intent(this, ArticleDetailActivity.class);
    // 传递文章数据(比如intent.putExtra("post", currentPost);)
    startActivity(intent);
}

注意事项

  • 确保已在build.gradle中添加AdMob依赖:implementation 'com.google.android.gms:play-services-ads:22.6.0'(版本号按需更新)
  • 测试阶段务必使用AdMob提供的测试广告ID,避免因测试触发政策违规
  • 若不需要持久化计数(比如APP重启后重置计数),可把SharedPreferences替换为内存变量private int clickCount = 0;

内容的提问来源于stack exchange,提问作者noorapps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:52:53