创建横幅和原生广告的方式是相同的,它们都是使用相同的 com.xy.sdk.View 来创建,只是属性值有所区别。

注意:这里 com.xy.sdk 是默认的包名。您在使用时,请替换为您在 cms 开发者面板中填写的包名。下同

通过 XML 创建横幅广告

在 Android 的 xml 布局文件中,在需要放置横幅广告的地方,插入以下代码即可:

android:id="@+id/banner_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:unit_size="banner_size"

app:unit_id="209A03F87BA3B4EB82BEC9E5F8B41383" />

其中 unit_size 设置为横幅广告的尺寸("banner_size"),unit_id 为横幅广告位的 id,注意不要填错。

通过 XML 创建原生广告

在 Android 的 xml 布局文件中,在需要放置原生广告的地方,插入以下代码即可:

android:id="@+id/native_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:unit_size="native_size"

app:unit_id="98738D91D3BB241458D3FAE5A5BF7D34" />

其中 unit_size 设置为原生广告的尺寸("native_size"),其中 unit_id 为横幅广告位的 id,注意不要填错。

其它属性

除了 unit_size,unit_id 属性之外,还有 2 个特别的属性: unit_width 和 unit_height。

这 2 个属性跟 unit_size 一样都是用来设置广告尺寸的。

对于原生广告 unit_size 还可以设置其它的一些预设枚举值:

native_2to1_size

native_3to2_size

native_16to9_size

native_4to3_size

native_1to1_size

native_11to4_size

如果上面这些预设值都不合适,你可以使用 unit_width 和 unit_height 来设置合适的广告宽高值。

unit_width 和 unit_height 的值为整数,没有单位。

native_size 是一个特殊的值,其它取值都是固定宽高比的,而 native_size 是自适应内容宽高的。如果您的广告宽高比尺寸是固定的,请不要使用 native_size 这个尺寸预设值。

获取对象

在 Java 代码中,通过:

com.xy.sdk.View bannerView = findViewById(R.id.banner_view);

com.xy.sdk.View nativeView = findViewById(R.id.native_view);

可以获取到该广告对象。

直接通过 Java 代码创建横幅、原生广告

import android.app.Activity;

import android.view.ViewGroup;

import android.os.Bundle;

import com.xy.sdk.Size;

import com.xy.sdk.View;

import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;

import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;

...

public class MainActivity extends Activity {

...

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

...

ViewGroup container = findViewById(R.id.container);

...

View bannerView = new View(this);

bannerView.setSize(Size.BANNER);

container.addView(bannerView, MATCH_PARENT, WRAP_CONTENT);

bannerView.load("CA868C57C6D992A2DDAAB7EAEE63D18B");

View nativeView = new View(this);

nativeView.setSize(Size.NATIVE_3TO2);

container.addView(nativeView, MATCH_PARENT, WRAP_CONTENT);

nativeView.load("98738D91D3BB241458D3FAE5A5BF7D34");

...

}

...

}

资源回收

为了能够及时回收资源,在该广告对象所在的 Activity 对象中,加入以下方法:

@Override

protected void onDestroy() {

bannerView.destroy();

nativeView.destroy();

super.onDestroy();

}

@Override

protected void onPause() {

bannerView.pause();

nativeView.pause();

super.onPause();

}

@Override

protected void onResume() {

bannerView.resume();

nativeView.resume();

super.onResume();

}

如果不加以上语句,对于带有视频的原生广告,视频可能仍然会在后台播放而无法关闭。

setSize 方法

该方法与使用 XML 中的 app:unit_size, app:unit_width 和 app:unit_height 属性设置广告尺寸是等价的。

load 方法

该方法用于设置广告位 id,并且加载广告。该方法只能执行一次。

多次执行该方法时,只有第一次设置的广告位 id 有效,后面的设置无效,而且也不会重复加载广告。

另外,当通过 XML 的 app:unit_id 属性设置了广告位 id 的情况下,试图通过执行该方法来修改广告位 id 也是无效的。

load 方法还有一个重载版本,重载版本的第一个参数跟上面的方法一致,第二个参数表示是否自动显示,如果您需要提前加载,延迟显示,可以调用该方法时,设置改参数的值为 false,则广告加载完之后,不会自动显示,当调用 show 或者 render 方法时才会显示,显示之前可以通过 isLoaded 方法来判断是否已经加载完毕,但通常你不需要调用它,因为在 show 和 render 方法内部有同样的判断,除非您需要在 if 语句的 else 语句中有其它的操作。

show 和 render 方法的异同点

show 和 render 方法都应该在 onLoaded 事件发生之后调用才会有效,在此之前调用是无效的。

它们两个的作用都是在广告加载之后,开发者可以手动控制广告的显示。但它们之间是有区别的。

show 方法在展示广告之后,会自动进行展示上报。而 render 方法不会自动进行展示上报。

show 方法会在展示广告之前检查广告视图是否处于可见状态,只有当处于可见状态时,show 方法才会进行广告展示并上报。而 render 方法不会做该检查,而是直接将广告内容显示在广告视图中。

render 方法因为不会进行展示上报,因此,开发者需要手动调用 impressionReport 方法进行展示上报。

impressionReport 方法

impressionReport 方法应该在 onRendered 事件发生之后调用才会有效,在此之前调用是无效的。

impressionReport 方法是与 render 方法对应的,如果不使用 render 方法,也不要使用 impressionReport 方法进行手动展示上报。

开发者不论在何种情况下,对 impressionReport 方法进行调用,都会进行展示上报,即使在广告处于不可见状态时也会进行展示上报,该方法不会在客户端对展示上报进行过滤,但是会将跟广告可见状态相关的各种数据上报给服务器,如果服务器发现展示上报时广告处于不可见状态,会判定为无效展示,如果无效展示过多,会判定为作弊行为。

开发者使用该方法时,请按照正确的步骤进行,否则,后果自负。

横幅广告轮转显示

默认情况下,广告不会自动轮转显示,如果需要对横幅广告开启自动轮转显示,可以使用 setCarouselModeEnabled 方法开启该功能,这样横幅广告就会根据后台设置的轮转时间(15秒或30秒),进行自动轮转显示了。

横幅广告轮转动画

默认情况下,横幅广告是直接显示出来的,如果需要在广告轮转时,有一个滑入滑出的动画效果,可以使用 setAnimationEnabled 方法开启该功能。

原生广告视频控制

对于原生广告可以通过 getVideoController 方法返回一个 VideoController 对象。

hasVideo 方法

如果原生广告中包含视频,该方法返回 true,否则返回 false。

play 方法

如果原生广告中包含视频,可以使用该方法开始视频播放。

pause 方法

如果原生广告中包含视频,可以使用该方法暂停视频播放。

mute 方法

如果原生广告中包含视频,可以通过该方法控制视频是否静音。设置为 true 为静音,设置为 false 取消静音。

isPlaying 方法

用来判断视频是否处于播放状态。

isEnded 方法

用来判断视频是否已播放完毕。

getMetadata 方法

如果原生广告中包含视频,通过该方法可以返回该视频的元信息。

注意:只有当视频元信息加载完毕之后,该方法才能返回有效值,否则,返回 null。

原生模板样式

原生广告的样式通常需要跟用户 app 的风格一致,因此,我们对原生广告提供了自定义 HTML 模板功能(实际上我们对所有类型的广告都提供了自定义 HTML 模板功能,只是其它类型的广告,即使不使用该功能也基本能满足需求)。因此,当您使用原生广告时,最好是按照自己 app 的风格来定制自己专用的模板。尤其是原生视频广告,默认模板使用的是 HTML 默认的视频控制栏,其美观度欠佳,您很可能需要自己定制样式才能满足需求。

如果您有好的样式,也可以推荐给我们,如果您推荐的样式能够满足大多数用户需求的话,我们会考虑更新默认的模板。

android 原生广告制作,创建横幅、原生广告 · adtalos/android-xy-sdk-demo Wiki · GitHub相关推荐

  1. 计算机广告制作专业老师,计算机广告制作专业专业院校诚信服务_招生梁老师...

    计算机广告制作专业专业院校诚信服务,招生梁老师,梁老师从事广州白云工商技师学院(广州白云工商高级技工学校)多年的教育招生工作,对学校各专业非常熟悉,每年为广大的学生和家长提供专业的咨询服务,是资深的专 ...

  2. 原生JS制作简单的漂浮广告

    漂浮广告的原理:用通俗一点的话来说,漂浮广告就是一个在不断改变自身位置的div(当然亦可以是其他),并且在遇到界面的边界时改变当前运动的方向: **第一步:**制作一个能够移动的div,并给各项参数赋 ...

  3. android studio制作目录布局,Android Studio:新创建的目录未出现在文件夹Vi中

    9个解决方案 136 votes 事实证明,顶部有一个选择器,默认设置为显示Android. 如果您将切换按钮向下拨到"包",您可以看到自己的包. Aggressor answer ...

  4. Android编程示例:创建机场计划模拟器应用程序

    在本文中,我们将演示如何使用Android Studio和Java编程语言创建一个示例Android应用程序,从"临时"实现高级响应用户界面的功能.本文中讨论的应用程序将实现机场航 ...

  5. 原生编辑器_微信小程序 广告原生模板广告

    原生模板 广告 小程序广告流量主操作指引:文档地址 开发者可以使用 ad-custom 组件创建 原生模板 广告组件,原生模板 广告组件在创建后会自动拉取广告数据并显示. 广告尺寸设置 原生模板 广告 ...

  6. 【Android FFMPEG 开发】FFMPEG ANativeWindow 原生绘制 ( Java 层获取 Surface | 传递画布到本地 | 创建 ANativeWindow )

    文章目录 I . FFMPEG ANativeWindow 原生绘制 II . FFMPEG 原生绘制流程 III . Java 层获取 Surface 画布 IV . 传递 Surface 画布到 ...

  7. android canvas广告牌,亚马逊广告后台创建CPC站内广告教程

    亚马逊站内广告投放前需要对广告创建流程以及后台创建入口有一些基础的了解.付费推广Sponsored Product,又称Pay Per Click/Cost Per Click (PPC/CPC).做 ...

  8. android添加横幅广告,Android关于横幅banner广告的实现

    前言 前些时间在接入一个广告sdk,遇到了一件很棘手的事情,就是接入banner广告展示时,通过sdk提供的接口,只能够获得广告展示的数据,如图片,详情,标题等内容,并不会直接通过设置参数,把具体的内 ...

  9. html5游戏封装安卓,html5游戏移植到android并打包成apk,加广告《二》

    html5游戏移植到android并打包成apk,加广告<二> 这篇则讲解开发集成,先看看工程目录结构 ? qqbrowser_sdk_v1.2.jar为X5内核sdk,下载注册开发者 B ...

最新文章

  1. linux进程间通信:system V 信号量 生产者和消费者模型编程案例
  2. linux ps(process status) 命令详解
  3. mysql 5.7.16默认密码_(转)Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql默认密码...
  4. 《Visual Studio Hacks 》(十)
  5. concurrent (二)AQS
  6. 结账任务 - 年终结账
  7. python 必备模块和包_Python_异常和模块
  8. 【物联网】OpenWrt OpenWRT的源码下载及目录结构
  9. Flask项目--注册
  10. Eclipse使用————生成Get/Set、toString快捷键(不使用鼠标)
  11. C++20 要来了!
  12. 疫情向左、大基金向右,国产光刻胶走到了哪一步?
  13. 《Javascript DOM 编程艺术》
  14. ashx比较完美的权限处理(适合页面,不适合安卓远程读取接口)
  15. 千千静听 dfx 音效插件_专业团队的蝰蛇音效,好听就是好软件
  16. java 详情页_电商网站详情页系统架构
  17. QNX分布式实时操作系统初步认识-QNX系统了解认识
  18. Microsoft PowerPoint无法执行语言识别
  19. 北京汉正天成科技有限公司大家听说过没?这家公司怎么样?
  20. 一次服务器上g1回收器发生fullgc的粗浅理解与记录

热门文章

  1. 缔元信《团购报告》即将发布,网络团购常识普及
  2. 计算机技术的未来突破,中科院正式宣布!又一项重要技术迎突破,未来15年都会领先美国?...
  3. IDEA引入Lombok后编译时找不到符号问题处理
  4. php 数组 打乱顺序,PHP数组随机乱序和反序的实例详解
  5. 《跨界杂谈》开源不是美女不要乱抱
  6. R语言中rattle安装,GTK+反复不成功的问题
  7. Hadoop获取namenode的命令
  8. 如何在地图上采集数据呢?视频详细讲解全过程!
  9. 企业团队成员介绍PPT模板
  10. python 深度 视差 计算_计算视觉——视差计算