一款app刚出世的时候是没有广告的,流畅的速度和粘性的设计,让这款app使用的人越来越多,这个时候,广告就诞生了,app中加入广告的位置有很多,最常见的就是启动页的广告,首页的banner的轮询广告,其他页面的一些角标广告。今天我这里实现的是一个Android的启动页的广告,支持倒计时,和跳过,点击进入广告的详情页。今天记录下来,也给大家参考。


首先来看效果图:




我们都知道现在大多app启动的时候,都有一个loading的activity,就比如今日头条,高德地图那样的,如下图,在这我们叫它StartLoadingActivity,一般会在这个界面停留1秒中的时间,我们会在这里做一些全局的初始化的操作,或者是一些全局的广播的注册等等。
我的思路:
1、在StartLoadingActivity中去后台检查,有没有广告的配置
2、如果没有,1s后直接进入主页,如果有,就去下载广告图片,并存储广告的其他信息
3、app下次打开的时候,去检查本地缓存,和数据库,如果有广告的信息,并且没有过期,就显示广告。
这儿有个问题,就是先检查本地缓存还是先去后台检查有没有广告的配置,我个人的做法是先去检查本地是否有广告的缓存,这样保证最新配置的广告在下次app启动的时候显示。

下面来说说具体的实现:

广告的实体类中主要有以下字段:

private String androidimg;//广告图片的urlprivate String end;// 过期时间的时间戳private String id;private String rank;//广告的排序private String shorturl;private String title;//广告的标题/** * 广告类型 1:文字 2:图片 3:图文 */private String typeid;private String url;//点击广告跳转的urlprivate String flag;//0:广告可点击    1:广告不可点    2:app端删除这条广告的信息(数据库/图片缓存)

StartLoadingActivity类的xml文件

<?xml version="1.0" encoding="utf-8"?>                                                

然后在 StartLoadingActivity类中,去查询数据库和本地缓存,有没有广告的信息,如果有的话,就取本地缓存的图片装换成bitmap,然后加载到imageview中,

alist = AdvertisementDao.getAdDataList();//查询广告信息if(alist != null && alist.size()>0){mAdver = alist.get(alist.size()-1);File f =new File(mAdver.getAndroidimg());//获取最新的一条广告信息if(f.exists() && !isDeadline(alist.get(alist.size()-1))){//判断文件存在,并且没有过期Bitmap b = AdvertiseUtil.scaleImgSize(f);adImg.setImageBitmap(b);adIsFinish = true;b = null;}}


现在只需要在加载界面去判断,如果adIsFinish为true,就把adImg显示出来。点界面的跳过,就提前结束倒计时,跳转到主界面即可。

那么问题又来了,如果时间长了,我们的数据库中和本地文件的缓存中肯定有很多的数据,这样肯定不好,这儿我用一个线程去检查数据库中所有的数据,然后看他们的end是否过期,如果过期就把这条数据和它对应的本地文件删了。这样就不会有数据冗余的情况了。

// 启动一个线程,去删除过期的广告信息new Thread(new Runnable() {@Overridepublic void run() {for (Ad ad : alist) {if (isDeadline(ad)) {// 如果当前广告过期,则删除数据库中的记录,和本地的文件AdvertiseUtil.deleteCachedAdverImg(context, ad);AdvertisementDao.deleteAd(ad);}}}}).start();}

到此,一个简单的启动页广告就ok了,当然,如果用到实际项目中的话,还需要大家继续优化。

源码下载

更多相关文章

  1. Android中WebView使用解析
  2. Android实现 广告识别之 广告库
  3. Android(安卓)Glide 使用
  4. Android照片墙瀑布流的实现与思考
  5. RxCache--打造自己的Android缓存框架
  6. Fragment 视图重绘问题
  7. Android(安卓)的 ApkTool 反编译 apk xml 和去广告
  8. webview 设定和使用缓存来获取网页中的js,css和图片资源
  9. Android(安卓)Glide图片缓存原理及手写实现

随机推荐

  1. Android上SD卡图片的标准缓存方法
  2. Android Adb Gadget Driver
  3. android ndk log使用demo
  4. Android(安卓)带清除功能的输入框控件Cle
  5. android 使用开源库zxing生成二维码,扫描
  6. Android 全局异常处理
  7. android ViewParent requestDisallowInte
  8. android 事件的获取
  9. android选择时间攻略
  10. Android Studio 之 启动和停止服务