嗨,我正在使用Android应用程序,并使用AdWhirl显示我的广告.我希望能够在AdWhirl没有返回广告时处理这种情况.当它失败时,我想展示一个装饰条.
任何人都可以举个例子吗?
提前致谢,
好的,我现在已经弄明白了.有两种可能的方法,一种是非常容易的,另一种需要更多的工作.
只要没有任何显示内容,adwhirl布局就会保持不可见.因此,您只需FrameLayout在后台创建一个包含后备视图的内容,并在前面创建类似于此的adwhirl视图:
<?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>
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以将视图添加到布局(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);
Run Code Online (Sandbox Code Playgroud)
而已.
在GoodNews中虽然我想要一种更复杂的方式:当AdWhirl忙于获取广告时,应显示"广告加载..."消息,如果没有任何东西可以填写内部广告横幅(在应用中作为资源提供,那么如果互联网不可用,它甚至可以显示.加载消息很容易,因为它可以如上所示实现,但动态内部标题有点棘手.
解决方案是由AdWhirl提供的强大的自定义事件 - 不幸的是 - 记录严重.要采取的第一步是在AdWhirl Web界面中创建自定义事件:
上述配置可确保只有在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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您需要使用以下命令注册事件处理程序AdWhirlLayout:
adView.setAdWhirlInterface(new AdWhirlEventHandler(adView));
Run Code Online (Sandbox Code Playgroud)
而已.
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |