加载奖励视频广告时显示进度条

时间:2018-01-18 16:22:55

标签: java android admob rewardedvideoad

我想使用奖励视频广告(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();
            }
        }
    }

现在我想加载一个进度条,如果还没有加载视频 谢谢

3 个答案:

答案 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()函数,并且发生以下两种情况之一:

  • 1)如果广告已成功加载,则会显示该广告。
  • 2)如果不是,它将再次调用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()

最后我在

中停止了runnable
if (mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.show();
    }else{
        loadRewardedVideoAd();
    }

我希望这会对你有所帮助。