I have a ViewPager
in MainActivity
that open a new Activity
when you touch each image that is inside an adapter.
Does anyone know how to show an ad before these new activities are loaded?
As you can see, I have an adapter called CustomSwipeAdapterCovers
and it is responsible for opening the new activities, and in MainActivity
show how the ad is loaded, but I don't know how to implement ads on non-activities.
public class MainActivity extends AppCompatActivity {
private static final int START_LEVEL = 1;
private int mLevel;
private Button mNextLevelButton;
private InterstitialAd mInterstitialAd;
private TextView mLevelTextView;
private ViewPager viewPager;
private CustomSwipeAdapterCapas adapter;
//=================================
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the next level button, which tries to show an interstitial when clicked.
mNextLevelButton = ((Button) findViewById(R.id.next_level_button));
mNextLevelButton.setEnabled(false);
mNextLevelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showInterstitial();
}
});
// Create the text view to show the level number.
mLevelTextView = (TextView) findViewById(R.id.level);
mLevel = START_LEVEL;
// Create the InterstitialAd and set the adUnitId (defined in values/strings.xml).
mInterstitialAd = newInterstitialAd();
loadInterstitial();
// Toasts the test ad message on the screen. Remove this after defining your own ad unit ID.
Toast.makeText(this, TOAST_TEXT, Toast.LENGTH_LONG).show();
viewPager = findViewById(R.id.viewpager_main_xml);
adapter = new CustomSwipeAdapterCapas(this);
viewPager.setAdapter(adapter);
}
//=====================================
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onRestart() {
super.onRestart();
}
private InterstitialAd newInterstitialAd() {
InterstitialAd interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(getString(R.string.interstitial_ad_unit_id));
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
mNextLevelButton.setEnabled(true);
}
@Override
public void onAdFailedToLoad(int errorCode) {
mNextLevelButton.setEnabled(true);
}
@Override
public void onAdClosed() {
// Proceed to the next level.
goToNextLevel();
}
});
return interstitialAd;
}
private void showInterstitial() {
// Show the ad if it's ready. Otherwise toast and reload the ad.
if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Toast.makeText(this, "Ad did not load", Toast.LENGTH_SHORT).show();
goToNextLevel();
}
}
private void loadInterstitial() {
// Disable the next level button and load the ad.
mNextLevelButton.setEnabled(false);
AdRequest adRequest = new AdRequest.Builder()
.setRequestAgent("android_studio:ad_template").build();
mInterstitialAd.loadAd(adRequest);
}
private void goToNextLevel() {
// Show the next level and reload the ad to prepare for the level after.
mLevelTextView.setText("Level " + (++mLevel));
mInterstitialAd = newInterstitialAd();
loadInterstitial();
}
}
public class CustomSwipeAdapterCovers extends PagerAdapter {
private int[] BookCovers = { R.drawable.cover_1,
R.drawable.cover_2,
R.drawable.cover_3,
R.drawable.capa_4,
R.drawable.capa_5,
R.drawable.capa_6,
R.drawable.capa_7,
R.drawable.capa_8,
R.drawable.capa_9,
R.drawable.capa_10,
R.drawable.capa_11,
R.drawable.capa_12,};
private Context context;
private LayoutInflater layoutInflater;
public CustomSwipeAdapterCapas(Context context){
this.context = context;
}
@Override
public int getCount() {
return capasLivros.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == (LinearLayout) object);
}
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View item_view = layoutInflater.inflate(R.layout.capas_layout, container, false);
ImageButton imageButton = item_view.findViewById(R.id.imagebutton_main_xml);
imageButton.setImageResource(BookCovers[position]);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if( position == 0){
Intent intent = new Intent(v.getContext(), LivroUmActivity.class);
v.getContext().startActivity(intent);
} else if(position == 1){
Intent intent = new Intent(v.getContext(), LivroDoisActivity.class);
v.getContext().startActivity(intent);
} else if(position == 2){
Intent intent = new Intent(v.getContext(), LivroTresActivity.class);
v.getContext().startActivity(intent);
} else if(position == 3){
Intent intent = new Intent(v.getContext(), LivroQuatroActivity.class);
v.getContext().startActivity(intent);
} else if(position == 4){
Intent intent = new Intent(v.getContext(), LivroCincoActivity.class);
v.getContext().startActivity(intent);
} else if(position == 5){
Intent intent = new Intent(v.getContext(), LivroSeisActivity.class);
v.getContext().startActivity(intent);
} else if(position == 6){
Intent intent = new Intent(v.getContext(), LivroSeteActivity.class);
v.getContext().startActivity(intent);
} else if(position == 7){
Intent intent = new Intent(v.getContext(), LivroOitoActivity.class);
v.getContext().startActivity(intent);
} else if(position == 8){
Intent intent = new Intent(v.getContext(), LivroNoveActivity.class);
v.getContext().startActivity(intent);
} else if(position == 9){
Intent intent = new Intent(v.getContext(), LivroDezActivity.class);
v.getContext().startActivity(intent);
} else if(position == 10){
Intent intent = new Intent(v.getContext(), LivroOnzeActivity.class);
v.getContext().startActivity(intent);
} else if(position == 11){
Intent intent = new Intent(v.getContext(), LivroDozeActivity.class);
v.getContext().startActivity(intent);
}
}
});
container.addView(item_view);
return item_view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
//super.destroyItem(container, position, object);
}
See Question&Answers more detail:
os