1、前言
在Android项目开发中,经常会遇到需要实现启动页广告的需求。今天就来整理下启动页广告的实现,以便在今后的项目中拿来参考使用。
2、概述
实现思路:
1、在启动页初始化阶段,访问后端接口,获取广告数据,广告数据封装在JavaBean当中。
2、根据返回的数据中的广告类型,选择展示方式,比如静态图,Gif动图或者视频等,如果返回的广告数据为空,则在启动页资源初始化后直接跳转到主页面。
3、展示广告,并开始广告倒计时,点击跳过或者倒计时结束,则从启动页跳转到主页面。
总体实现思路如上,本文用到第三方框架Glide。
3、实现
创建工程,配置清单文件,记得在清单文件中加入以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
关键代码如下。
//倒计时Handler
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (time < 0) {
mAdShowStatus = true;
if (mHandler != null && mHandler.hasMessages(0)) {
mHandler.removeMessages(0);
}
enterToMain();
} else {
time = time - 1;
ad_time_tv.setText("跳过" + time);
mHandler.sendEmptyMessageDelayed(0, 1000);
}
}
};
//展示广告
private void showAd(AdverBean bean) {
ad_time_tv.setVisibility(View.VISIBLE);
switch (bean.getAdvertType()) {
case Constant.IMAGE_TYPE://Image类型
final WeakReference<ImageView> imageViewWeakReference1 = new WeakReference<>(ad_iv);
ImageView target1 = imageViewWeakReference1.get();
if (target1 != null) {
Glide.with(this)
.load(bean.getAdvertUrl())
.into(target1);
time = 3;
ad_time_tv.setText("跳过" + time);
mHandler.sendEmptyMessageDelayed(0, 1000);
}
break;
case Constant.GIF_TYPE://GIF类型
final WeakReference<ImageView> imageViewWeakReference2 = new WeakReference<>(ad_iv);
ImageView target2 = imageViewWeakReference2.get();
if (target2!= null) {
Glide.with(this)
.load(bean.getAdvertUrl())
.into(target2);
time = 5;
ad_time_tv.setText("跳过" + time);
mHandler.sendEmptyMessageDelayed(0, 1000);
}
break;
default:
mAdShowStatus = true;
enterToMain();
}
}