Показывать кнопку только при загрузке промежуточного объявления, в противном случае показывать TextView? - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь показать кнопку, которая отображает промежуточную рекламу AdMob и переносит пользователя к следующему действию, когда оно закрыто. Но я хочу, чтобы кнопка была видна при загрузке промежуточной рекламы, до тех пор я хочу отобразить TextView, которое говорит, что «приложение загружается ...».

Это то, что я создал до сих пор.

Button goFree;
private TextView loadingFree;
private InterstitialAd mInterstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ask);
    Button goFree = (Button) findViewById(R.id.goFree);
    loadingFree = findViewById(R.id.loadingFeee);

    MobileAds.initialize(RegisterNote.this, "cca-app-pub-3940256099942544/1033173712");
    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());

    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            startActivity(new Intent(Ask.this, Free.class));
            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }
    });

    if (mInterstitialAd.isLoaded()) {
        goFree.setVisibility(View.VISIBLE);
        lodingFree.setVisibility(View.GONE);
    } else {
        goFree.setVisibility(View.GONE);
        lodingFree.setVisibility(View.VISIBLE);

    }

    goFree.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mInterstitialAd.show();
        }
    });
}

Но проблема в том, что даже при загрузке рекламы видимость TextView остается VISIBLE, а кнопка остается GONE. Возможно, потому что, когда объявление загружается, оно не вызывает функцию, чтобы изменить видимость.

Что мне здесь делать? Как показать кнопку только после загрузки рекламы?

Ответы [ 4 ]

0 голосов
/ 07 сентября 2018

Каждый из переопределяемых методов в AdListener соответствует событию в жизненном цикле объявления.

Вы можете написать свой код в методе onAdLoaded (), когда добавление загружено, оно скрывает просмотр текста и видимую кнопку.

mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
        goFree.setVisibility(View.VISIBLE);
        lodingFree.setVisibility(View.GONE);
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when the ad is displayed.
    }

    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when when the interstitial ad is closed.
    }
0 голосов
/ 07 сентября 2018
Check the below example that i have implemented. Hope it will help you. Just check this method

    holder.cv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                  //  showInterstitial();

                    if (interstitialAd != null && interstitialAd.isLoaded()) {
                        interstitialAd.show();
                    } else {
                        Intent intent = new Intent();
                        Bundle bundle = 
     ActivityOptions.makeSceneTransitionAnimation((Activity) mContext, 
     holder.thumbnailImage, holder.thumbnailImage.getTransitionName()).toBundle();
                        intent.setClass(mContext, AboutMovieActivity.class);
                        intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_ID, 
   mSearchedMovies.get(position).getId());
                        intent.putExtra(IntentConstants.INTENT_KEY_POSTER_PATH, 
   mSearchedMovies.get(position).getPosterPath());
                        intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_NAME, 
    mSearchedMovies.get(position).getTitle());
                        mContext.startActivity(intent, bundle);
                        startGame();
                    }

                    interstitialAd.setAdListener(new AdListener(){

                        @Override
                        public void onAdClosed() {
                            Intent intent = new Intent();
                            Bundle bundle = 
     ActivityOptions.makeSceneTransitionAnimation((Activity) mContext, 
     holder.thumbnailImage, holder.thumbnailImage.getTransitionName()).toBundle();
                            intent.setClass(mContext, AboutMovieActivity.class);
                            intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_ID, 
     mSearchedMovies.get(position).getId());
                            intent.putExtra(IntentConstants.INTENT_KEY_POSTER_PATH, 
    mSearchedMovies.get(position).getPosterPath());
                            intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_NAME, 
    mSearchedMovies.get(position).getTitle());
                            mContext.startActivity(intent, bundle);
                        }
                    });




    Full code is below:-

     public class MoviesSearchAdapter extends 
    RecyclerView.Adapter<MoviesSearchAdapter.ViewHolder> {
    Context mContext;
    private ArrayList<Movie> mSearchedMovies;
    private InterstitialAd interstitialAd;

    public MoviesSearchAdapter(ArrayList<Movie> searchedMovies, Context context) {
        mContext = context;
        mSearchedMovies = searchedMovies;
      }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = 
    LayoutInflater.from(parent.getContext()).inflate
     (R.layout.search_movie_list_item, 
    parent, false);

        // Initialize the Mobile Ads SDK.   ca-app-pub-7152815429504851~7360705844
        MobileAds.initialize(mContext, "ca-app-pub-7152815429504851~8085885141");

        // Create the InterstitialAd and set the adUnitId.
        interstitialAd = new InterstitialAd(mContext);
        // Defined in res/values/strings.xml  ca-app-pub- 
      7152815429504851/2822695030
        interstitialAd.setAdUnitId("ca-app-pub-7152815429504851/4913761040");

        startGame();

        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        if (mSearchedMovies != null) {
            holder.name.setText(mSearchedMovies.get(position).getTitle());
            Picasso.with(mContext).load(URLConstants.IMAGE_BASE_URL + 
     mSearchedMovies.get(position).getPosterPath()).into(holder.thumbnailImage);
            if (mSearchedMovies.get(position).getDate().length() >= 5) {
                String date = mSearchedMovies.get(position).getDate().substring(0, 
      4);
                holder.releaseDate.setText(date);
            }
            String rating = 
     Double.toString(mSearchedMovies.get(position).getRating());
            holder.rating.setText(rating);
            holder.cv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                  //  showInterstitial();

                    if (interstitialAd != null && interstitialAd.isLoaded()) {
                        interstitialAd.show();
                    } else {
                        Intent intent = new Intent();
                        Bundle bundle = 
     ActivityOptions.makeSceneTransitionAnimation((Activity) mContext, 
    holder.thumbnailImage, holder.thumbnailImage.getTransitionName()).toBundle();
                        intent.setClass(mContext, AboutMovieActivity.class);
                        intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_ID, 
    mSearchedMovies.get(position).getId());
                        intent.putExtra(IntentConstants.INTENT_KEY_POSTER_PATH, 
    mSearchedMovies.get(position).getPosterPath());
                        intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_NAME, 
    mSearchedMovies.get(position).getTitle());
                        mContext.startActivity(intent, bundle);
                        startGame();
                    }

                    interstitialAd.setAdListener(new AdListener(){

                        @Override
                        public void onAdClosed() {
                            Intent intent = new Intent();
                            Bundle bundle = 
     ActivityOptions.makeSceneTransitionAnimation((Activity) mContext, 
    holder.thumbnailImage, holder.thumbnailImage.getTransitionName()).toBundle();
                            intent.setClass(mContext, AboutMovieActivity.class);
                            intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_ID, 
    mSearchedMovies.get(position).getId());
                            intent.putExtra(IntentConstants.INTENT_KEY_POSTER_PATH, 
    mSearchedMovies.get(position).getPosterPath());
                            intent.putExtra(IntentConstants.INTENT_KEY_MOVIE_NAME, 
    mSearchedMovies.get(position).getTitle());
                            mContext.startActivity(intent, bundle);
                        }
                    });



                }
            });
        }

    }

    @Override
    public int getItemCount() {
        return mSearchedMovies.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        CardView cv;
        ImageView thumbnailImage;
        TextView name;
        TextView releaseDate;
        TextView rating;

        public ViewHolder(View itemView) {
            super(itemView);
            cv = (CardView) itemView.findViewById(R.id.cardView);
            thumbnailImage = (ImageView) 
     itemView.findViewById(R.id.thumbnailImageView);
            name = (TextView) itemView.findViewById(R.id.nameTextView);
            releaseDate = (TextView) 
     itemView.findViewById(R.id.releaseDateTextView);
            rating = (TextView) itemView.findViewById(R.id.ratingTextView);
        }
    }

    private void showInterstitial() {
        // Show the ad if it's ready. Otherwise toast and restart the game.
        if (interstitialAd != null && interstitialAd.isLoaded()) {
            interstitialAd.show();
        } else {
            //Toast.makeText(this, "Your Internet is not Working", 
     Toast.LENGTH_SHORT).show();
            startGame();
        }
    }

    private void startGame() {
        // Request a new ad if one isn't already loaded, hide the button, and kick 
     off the timer.
        if (!interstitialAd.isLoading() && !interstitialAd.isLoaded()) {
            AdRequest adRequest = new AdRequest.Builder().build();
            interstitialAd.loadAd(adRequest);
        }

        //  retryButton.setVisibility(View.INVISIBLE);

      }
     }
0 голосов
/ 07 сентября 2018

Здравствуйте, Хиджибиджи, попробуйте этот код, он вам поможет.

    mInterstitialAd.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
        goFree.setVisibility(View.VISIBLE);
        lodingFree.setVisibility(View.GONE);
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when the ad is displayed.
    }

    @Override
    public void onAdLeftApplication() {
        // Code to be executed when the user has left the app.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when when the interstitial ad is closed.
    }
});

Ссылка это ссылка

0 голосов
/ 07 сентября 2018

Попробуйте использовать onAdLoaded() функцию, как вы сделали с onAdClosed(), код должен быть похож на это:

     goFree.setVisibility(View.GONE);
     lodingFree.setVisibility(View.VISIBLE);

     mInterstitialAd.setAdListener(new AdListener() {
                 @Override
                 public void onAdLoaded() {
                     goFree.setVisibility(View.VISIBLE);
                     lodingFree.setVisibility(View.GONE);
                 }

                 @Override
                 public void onAdClosed() {
                     startActivity(new Intent(Ask.this, Free.class));
                     mInterstitialAd.loadAd(new AdRequest.Builder().build());
                 }
             });

И вы можете снять чек if else после.

Источник: https://developers.google.com/android/reference/com/google/android/gms/ads/InterstitialAd

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...