こんにちは私はAndroidアプリに取り組んでおり、AdWhirlを使用して広告を表示しています。AdWhirlが広告を返さない状況に対処できるようにしたいと思います。失敗したら装飾バーを見せたいです。
誰かが私に例を教えてもらえますか?
前もって感謝します、
OK私は今これを理解しました。考えられる方法は2つあり、1つは非常に簡単で、もう1つはもう少し作業が必要です。
表示するものがない限り、アドワールレイアウトは非表示のままです。したがって、次FrameLayout
のように、バックグラウンドにフォールバックビューを、フロントにアドワールビューを含むコンテンツを簡単に作成できます。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="53dp"
android:layout_gravity="center_horizontal"
>
<!-- fallback view -->
<TextView
android:id="@+id/ad_fallback"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="nothing to say..."
>
</FrameLayout>
次に、コードでビューをレイアウトに追加できます(parentView
上記の膨らんだレイアウトは次のとおりです)。
final DisplayMetrics dm = activity.getResources().getDisplayMetrics();
final AdWhirlLayout adView = new AdWhirlLayout(activity, ADWHIRL_ID);
adView.setMaxWidth((int) (dm.density * 320));
adView.setMaxHeight((int) (dm.density * 53));
adView.setGravity(Gravity.CENTER);
parentView.addView(adView);
それでおしまい。
GoodNewsでは、もっと洗練された方法が欲しかったのですが、AdWhirlが広告の取得でビジー状態で、内部の広告バナー(アプリのリソースとして提供されているため、インターネットが利用できない場合でも機能します)を表示する必要があります。上記のように実装できるため、メッセージの読み込みは簡単ですが、動的な内部バナーは少し注意が必要です。
解決策は、AdWhirlによって提供される強力なカスタムイベントであり、残念ながら、十分に文書化されていません。実行する最初のステップは、AdWhirlWebインターフェイスでカスタムイベントを作成することです。
上記の構成により、AdWhirlが実際の広告を表示できない場合にのみカスタムイベントが発生するようになります。
次に、コードでイベントを処理する必要があります。したがって、を実装し、パラメータなしでパブリックメソッドを定義するクラスとAdWhirlLayout.AdWhirlInterface
、カスタムイベントで指定された関数名と同じ名前が必要です。このメソッドは、特定のビューをAdWhirlレイアウトに挿入できます。
class AdWhirlEventHandler implements AdWhirlLayout.AdWhirlInterface {
private final AdWhirlLayout adView;
public AdWhirlEventHandler(AdWhirlLayout adView) {
this.adView = adView;
}
@Override
public void adWhirlGeneric() {
// nothing to be done: Generic notifications should also be
// configurable in the AdWhirl web interface, but I could't find them
}
/**
* Will be called by AdWhirl when our custom event with the function name
* "fallback" is fired. Called via reflection.
*/
public void fallback() {
try {
final View fallbackView =
... // inflate the view to be shown here
adView.pushSubView(fallbackView);
/*
* reset backfill chain and schedule next ad update
*/
adView.adWhirlManager.resetRollover();
adView.rotateThreadedDelayed();
} catch (MyExpectedException ex) {
/*
* forward to next option from the backfill list
*/
adView.rolloverThreaded();
}
}
}
AdWhirlLayout
次に、イベントハンドラーを次のように登録する必要があります。
adView.setAdWhirlInterface(new AdWhirlEventHandler(adView));
それでおしまい。