Showing Interstitial Ads With Timer in Splash Screen
30-10-2019Showing admob interstitial ads when splash screen is loaded with a timer can be implemented as follows:
package com.codesenior.admob; import android.content.Intent; import android.os.Bundle; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.InterstitialAd; import java.util.Timer; import java.util.TimerTask; public class SplashActivity extends AppCompatActivity { private InterstitialAd mInterstitialAd; private Timer waitTimer; private boolean interstitialCanceled; @Override protected void onCreate(Bundle savedInstanceState) { // Make sure this is before calling super.onCreate setTheme(R.style.SplashScreenTheme); super.onCreate(savedInstanceState); initTimer(); initInterstitialAd();//todo enable in production } private void initTimer() { waitTimer = new Timer(); waitTimer.schedule(new TimerTask() { @Override public void run() { SplashActivity.this.runOnUiThread(new Runnable() { @Override public void run() { startMainActivity(); } }); } }, 5000); } private void startMainActivity() { waitTimer.cancel(); interstitialCanceled=true; Intent mainIntent = new Intent(SplashActivity.this, MainActivity.class); startActivity(mainIntent); finish(); } private void initInterstitialAd() { mInterstitialAd = new InterstitialAd(this); mInterstitialAd.setAdUnitId(getResources().getString(R.string.ad_interstitial)); AdRequest adRequestInter = new AdRequest.Builder().build(); mInterstitialAd.loadAd(adRequestInter); //todo enable in production mInterstitialAd.setAdListener(new AdListener() { @Override public void onAdLoaded() { waitTimer.cancel(); if (!interstitialCanceled){ mInterstitialAd.show(); interstitialCanceled=true; } } public void onAdClicked() { waitTimer.cancel(); interstitialCanceled=true; } public void onAdFailedToLoad(int var1) { startMainActivity(); } }); } @Override public void onResume() { super.onResume(); if (interstitialCanceled) { startMainActivity(); } } }
SplashScreenTheme implementation:
<style name="SplashScreenTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@drawable/splash</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android:windowDisablePreview">true</item> </style>
Android Manifest Definition:
<activity android:name="com.codesenior.admob.SplashActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>