我在ViewPager
中有MainActivity
,当您触摸适配器内的每个图片时,会打开一个新的Activity
。
有人知道如何在加载这些新活动之前展示广告吗?
正如您所看到的,我有一个名为CustomSwipeAdapterCovers
的适配器,它负责打开新活动,并在MainActivity
显示广告的加载方式,但我不知道如何在非活动上实施广告。
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);
}
答案 0 :(得分:1)
我也遇到过同样的问题。 在您的情况下,不要打开适配器活动中的插页式广告,而是从下一个适配器活动活动中打开它。 以下是我的解决方案: 将Activity_B视为适配器活动。
假设有3个活动,开放顺序如下:
Activity_A --> Activity_B --> Activity_C.
现在我要在Activity_B
和Activity_C
之间展示插页式广告。
我先在Activity_A中加载了非页内广告,然后在Activity_C
中调用(或显示)。
你可以这样做:
在Activity_A中,即MainActivity添加如下代码:
public void showme(){
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
AdRequest adRequest = new AdRequest.Builder()
.build();
mInterstitialAd.loadAd(adRequest);
mInterstitialAd.setAdListener(new AdListener()
{
@Override
public void onAdClosed()
{
//reload interstitial
AdRequest adRequest = new AdRequest.Builder()
// .addTestDevice("YOUR_DEVICE_ID")
.build();
mInterstitialAd.loadAd(adRequest);
}
});
}
public static void showInterstitial() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
在OnCreate中的Activity_A中调用此showme()。
在OnCreate中的Activity_C粘贴下面的代码:
Activity_A.showInterstitial();
此外,此方法并未违反插页式广告和横幅广告的任何Google Admob政策。
检查实施此解决方案的应用PF Balance & Claim Status。
在此应用中,主要活动是适配器活动。
答案 1 :(得分:0)
您应该喜欢下面的代码...。 在适配器类的顶部声明此代码... 私人InterstitialAd mInterstitialAd;
之后,将其余代码放入onBindViewHolder()
@Override
public void onBindViewHolder(@NonNull MyHolder holder, final int position) {
Picasso.get()
.load(picsArray[position])
.into(holder.imageView);
mInterstitialAd = new InterstitialAd(context);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@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() {
Intent intent = new Intent(context, Full_Image_Activity.class);
intent.putExtra("IMG",picsArray[position]);
context.startActivity(intent);
///// onAdClosed()方法可以放置您的意图或您想要的东西,这是因为当您关闭添加时,意图必须知道该怎么做... } });
}
之后,您可以将代码放入如下所示的item.onClicklistner方法中。
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Intent intent = new Intent(context, Full_Image_Activity.class);
intent.putExtra("IMG",picsArray[getAdapterPosition()]);
context.startActivity(intent);
}
}
});
在else {}中,您可以将代码放入intent或您想要执行的任何操作中... 希望它能对很多人有用...