加载奖励视频广告时显示进度条
Show a progress Bar when Rewarded video Ads is loading
我想使用奖励视频广告 (Admob),但我想在加载视频广告时显示进度条
我已经尝试使用 async task 来完成它只是为了看看视频是否会加载但它没有工作
@SuppressLint("StaticFieldLeak")
public class videoAd extends AsyncTask<Void, Void, Void> {
@Override
protected void doInBackground(Void... voids) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
}
});
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if (mRewardedVideoAd.isLoaded()){
Toast.makeText(SetFullWallpaper.this, "Video loaded", Toast.LENGTH_SHORT).show();
mRewardedVideoAd.show();
}
}
}
现在我想在视频尚未加载时加载一个进度条
谢谢
在扩展 AsyncTask 的 class 中添加 OnProgressUpdate() 并在此添加进度对话框。
我正在放置一个 admob 视频,当您输入 activity 时执行。在我的例子中,我放置了一个可执行循环来在视频已经加载时启动它。
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}else{
loadRewardedVideoAd();
}
这是我所有代码的一部分
private boolean started = false;
private Handler handler = new Handler();
private void initializeAdMob() {
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
}
private void loadRewardedVideoAd() {
if (!mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.loadAd(getString(R.string.id_block_activity), new AdRequest.Builder().build());
}
}
private void showRewardedVideoAd() {
if (BaseInteractor.isNetworkAvailable(this)) {
showProgressBar(true);
start();
}
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}else{
loadRewardedVideoAd();
}
if (started) {
start();
}
}
};
public void stop() {
started = false;
handler.removeCallbacks(runnable);
}
public void start() {
started = true;
handler.postDelayed(runnable, 2000);
}
我终于在
中停止了可运行程序
@Override
public void onRewardedVideoAdOpened() {
showProgressBar(false);
stop();
}
希望对您有所帮助。
我是这样做的:
我有一个按钮,点击它会显示广告,所以我有一个布尔变量来跟踪按钮是否被点击:
boolean buttonClicked = false
这些行在我的 onCreate 函数中:
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getContext());
rewardedVideoAdListener = new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
if(buttonClicked) {
showAd();
}
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
loadRewardedVideoAd();
}
@Override
public void onRewarded(RewardItem rewardItem) {
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
if(buttonClicked) {
progressBar.setVisibility(View.INVISIBLE);
Toast toast = Toast.makeText(getContext(), "Please try again later", Toast.LENGTH_SHORT);
toast.show();
}
}
@Override
public void onRewardedVideoCompleted() {
}
};
mRewardedVideoAd.setRewardedVideoAdListener(rewardedVideoAdListener);
loadRewardedVideoAd();
pointsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAd();
}
});
这是我的 showAd 函数:
public void showAd(){
if (mRewardedVideoAd.isLoaded()) {
progressBar.setVisibility(View.GONE);
mRewardedVideoAd.show();
buttonClicked = false;
} else {
loadRewardedVideoAd();
progressBar.setVisibility(View.VISIBLE);
buttonClicked = true;
}
}
这是如何工作的,当创建 activity/fragment 时,应用会尝试通过调用 loadRewaredVideoAd()
函数在后台加载广告。然后当用户点击按钮时,showAd()
函数被调用并且发生以下两种情况之一:
- 1) 如果广告加载成功,则显示该广告。
- 2) 如果没有,它会再次调用
loadRewardedVideoAd()
并显示一个进度条。它还将 buttonClicked
设置为 true。然后,如果广告加载,将调用 onRewardedVideoAdLoaded()
函数,该函数会再次调用 showAd()
,这次会出现第一个选项。
如果这次广告也没有加载,则会调用 onRewardedVideoAdFailedToLoad(int i)
并显示祝酒词,提示用户稍后再试。
我想使用奖励视频广告 (Admob),但我想在加载视频广告时显示进度条
我已经尝试使用 async task 来完成它只是为了看看视频是否会加载但它没有工作
@SuppressLint("StaticFieldLeak")
public class videoAd extends AsyncTask<Void, Void, Void> {
@Override
protected void doInBackground(Void... voids) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
}
});
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if (mRewardedVideoAd.isLoaded()){
Toast.makeText(SetFullWallpaper.this, "Video loaded", Toast.LENGTH_SHORT).show();
mRewardedVideoAd.show();
}
}
}
现在我想在视频尚未加载时加载一个进度条
谢谢
在扩展 AsyncTask 的 class 中添加 OnProgressUpdate() 并在此添加进度对话框。
我正在放置一个 admob 视频,当您输入 activity 时执行。在我的例子中,我放置了一个可执行循环来在视频已经加载时启动它。
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}else{
loadRewardedVideoAd();
}
这是我所有代码的一部分
private boolean started = false;
private Handler handler = new Handler();
private void initializeAdMob() {
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
loadRewardedVideoAd();
}
private void loadRewardedVideoAd() {
if (!mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.loadAd(getString(R.string.id_block_activity), new AdRequest.Builder().build());
}
}
private void showRewardedVideoAd() {
if (BaseInteractor.isNetworkAvailable(this)) {
showProgressBar(true);
start();
}
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}else{
loadRewardedVideoAd();
}
if (started) {
start();
}
}
};
public void stop() {
started = false;
handler.removeCallbacks(runnable);
}
public void start() {
started = true;
handler.postDelayed(runnable, 2000);
}
我终于在
中停止了可运行程序@Override
public void onRewardedVideoAdOpened() {
showProgressBar(false);
stop();
}
希望对您有所帮助。
我是这样做的:
我有一个按钮,点击它会显示广告,所以我有一个布尔变量来跟踪按钮是否被点击:
boolean buttonClicked = false
这些行在我的 onCreate 函数中:
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getContext());
rewardedVideoAdListener = new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
if(buttonClicked) {
showAd();
}
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
loadRewardedVideoAd();
}
@Override
public void onRewarded(RewardItem rewardItem) {
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
if(buttonClicked) {
progressBar.setVisibility(View.INVISIBLE);
Toast toast = Toast.makeText(getContext(), "Please try again later", Toast.LENGTH_SHORT);
toast.show();
}
}
@Override
public void onRewardedVideoCompleted() {
}
};
mRewardedVideoAd.setRewardedVideoAdListener(rewardedVideoAdListener);
loadRewardedVideoAd();
pointsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAd();
}
});
这是我的 showAd 函数:
public void showAd(){
if (mRewardedVideoAd.isLoaded()) {
progressBar.setVisibility(View.GONE);
mRewardedVideoAd.show();
buttonClicked = false;
} else {
loadRewardedVideoAd();
progressBar.setVisibility(View.VISIBLE);
buttonClicked = true;
}
}
这是如何工作的,当创建 activity/fragment 时,应用会尝试通过调用 loadRewaredVideoAd()
函数在后台加载广告。然后当用户点击按钮时,showAd()
函数被调用并且发生以下两种情况之一:
- 1) 如果广告加载成功,则显示该广告。
- 2) 如果没有,它会再次调用
loadRewardedVideoAd()
并显示一个进度条。它还将buttonClicked
设置为 true。然后,如果广告加载,将调用onRewardedVideoAdLoaded()
函数,该函数会再次调用showAd()
,这次会出现第一个选项。 如果这次广告也没有加载,则会调用onRewardedVideoAdFailedToLoad(int i)
并显示祝酒词,提示用户稍后再试。