我想使用奖励视频广告(Admob),但我希望在视频广告加载时显示进度条 我已尝试使用异步任务进行操作,只是为了查看视频是否会加载,但它无法正常工作
@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();
}
}
}
现在我想加载一个进度条,如果还没有加载视频 谢谢
答案 0 :(得分:1)
这是我的方法:
我有一个按钮,当单击该按钮时会显示广告,因此我有一个布尔变量,用于跟踪按钮是否已被单击:
<asp:Repeater ID="rept1" runat="server">
<ItemTemplate>
<a href="../images/<%#Eval(" driver_photo ") %> "download> <img src="../images/<%#Eval("driver_photo ") %>" style=" Height:140px; Width:130px; " />
<br /><br />
<span class="fa fa-download btn btn-info" aria-hidden="true">
<b> Download</b></span></a>
</ItemTemplate>
</asp:Repeater>
</td>
这些行在我的onCreate函数中:
boolean buttonClicked = false
这是我的showAd函数:
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();
}
});
这是如何工作的,应用在创建活动/片段时尝试通过调用public void showAd(){
if (mRewardedVideoAd.isLoaded()) {
progressBar.setVisibility(View.GONE);
mRewardedVideoAd.show();
buttonClicked = false;
} else {
loadRewardedVideoAd();
progressBar.setVisibility(View.VISIBLE);
buttonClicked = true;
}
}
函数在后台加载广告。然后,当用户单击按钮时,将调用loadRewaredVideoAd()
函数,并且发生以下两种情况之一:
showAd()
并显示一次进度条。还将loadRewardedVideoAd()
设置为true。然后,如果广告加载,将调用buttonClicked
函数,该函数再次调用onRewardedVideoAdLoaded()
,这一次发生了第一个选项。
如果广告这次也没有加载,则会调用showAd()
并显示祝酒词,要求用户稍后再试。答案 1 :(得分:0)
在你的类中添加OnProgressUpdate(),扩展AsyncTask并在其中添加进度对话框。
答案 2 :(得分:0)
我正在放置一个admob视频,该视频会在您输入活动时执行。就我而言,我设置了一个可执行循环来启动视频已经加载。
function jumpToBlankLine() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A:A").getValues();
var maxIndex = values.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.setActiveRange(sheet.getRange(maxIndex + 2, 1));
}
这是我所有代码的一部分
Sheet.activate()
最后我在
中停止了runnableif (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}else{
loadRewardedVideoAd();
}
我希望这会对你有所帮助。