Don't inflate ad view, use it directly in layouts

This commit is contained in:
serso
2016-02-20 14:46:10 +01:00
parent 8b87de2f29
commit 928f23945f
15 changed files with 46 additions and 96 deletions

View File

@@ -2,18 +2,19 @@ package org.solovyev.android.calculator;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import org.solovyev.android.Check;
import com.google.android.gms.ads.AdSize;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
public class AdView extends FrameLayout {
@Nullable
@@ -23,14 +24,22 @@ public class AdView extends FrameLayout {
public AdView(Context context) {
super(context);
init();
}
public AdView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public AdView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
setVisibility(GONE);
setId(R.id.cpp_ad);
}
public void destroy() {
@@ -66,13 +75,7 @@ public class AdView extends FrameLayout {
return;
}
LayoutInflater.from(getContext()).inflate(R.layout.admob, this);
admobView = (com.google.android.gms.ads.AdView) findViewById(R.id.admob);
Check.isNotNull(admobView);
if (admobView == null) {
return;
}
admobView = addAdmobView();
admobListener = new AdView.AdViewListener(this);
admobView.setAdListener(admobListener);
@@ -85,6 +88,18 @@ public class AdView extends FrameLayout {
admobView.loadAd(b.build());
}
@Nonnull
private com.google.android.gms.ads.AdView addAdmobView() {
final com.google.android.gms.ads.AdView v = new com.google.android.gms.ads.AdView(getContext());
v.setVisibility(GONE);
v.setAdSize(AdSize.BANNER);
v.setAdUnitId(getResources().getString(R.string.admob));
final LayoutParams lp = new LayoutParams(MATCH_PARENT, WRAP_CONTENT);
lp.gravity = Gravity.CENTER;
addView(v, lp);
return v;
}
public void hide() {
if (admobView == null) {
return;

View File

@@ -24,7 +24,7 @@ public class AdUi {
@NonNull
private final Handler handler;
@Nullable
@Bind(R.id.ad)
@Bind(R.id.cpp_ad)
AdView adView;
@Nullable
private Boolean adFree = null;

View File

@@ -7,15 +7,9 @@ import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ListView;
import org.solovyev.android.calculator.AdView;
import org.solovyev.android.calculator.App;
import org.solovyev.android.calculator.Engine;
import org.solovyev.android.calculator.Preferences;
import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.*;
import org.solovyev.android.calculator.language.Language;
import org.solovyev.android.calculator.language.Languages;
import org.solovyev.android.checkout.BillingRequests;
@@ -23,10 +17,9 @@ import org.solovyev.android.checkout.Checkout;
import org.solovyev.android.checkout.ProductTypes;
import org.solovyev.android.checkout.RequestListener;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
import static org.solovyev.android.calculator.wizard.CalculatorWizards.DEFAULT_WIZARD_FLOW;
import static org.solovyev.android.wizard.WizardUi.startWizard;
@@ -212,7 +205,7 @@ public class PreferencesFragment extends org.solovyev.android.material.preferenc
if (adView != null) {
return;
}
adView = (AdView) LayoutInflater.from(getActivity()).inflate(R.layout.ad, null);
adView = new AdView(getActivity());
adView.show();
try {
listView.addHeaderView(adView);