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
相关产品推荐
相关产品推荐

