Android(安卓)app启动页广告
16lz
2021-01-26
一款app刚出世的时候是没有广告的,流畅的速度和粘性的设计,让这款app使用的人越来越多,这个时候,广告就诞生了,app中加入广告的位置有很多,最常见的就是启动页的广告,首页的banner的轮询广告,其他页面的一些角标广告。今天我这里实现的是一个Android的启动页的广告,支持倒计时,和跳过,点击进入广告的详情页。今天记录下来,也给大家参考。
首先来看效果图:
我们都知道现在大多app启动的时候,都有一个loading的activity,就比如今日头条,高德地图那样的,如下图,在这我们叫它StartLoadingActivity,一般会在这个界面停留1秒中的时间,我们会在这里做一些全局的初始化的操作,或者是一些全局的广播的注册等等。
我的思路:
1、在StartLoadingActivity中去后台检查,有没有广告的配置
2、如果没有,1s后直接进入主页,如果有,就去下载广告图片,并存储广告的其他信息
3、app下次打开的时候,去检查本地缓存,和数据库,如果有广告的信息,并且没有过期,就显示广告。
这儿有个问题,就是先检查本地缓存还是先去后台检查有没有广告的配置,我个人的做法是先去检查本地是否有广告的缓存,这样保证最新配置的广告在下次app启动的时候显示。
然后在 StartLoadingActivity类中,去查询数据库和本地缓存,有没有广告的信息,如果有的话,就取本地缓存的图片装换成bitmap,然后加载到imageview中,
到此,一个简单的启动页广告就ok了,当然,如果用到实际项目中的话,还需要大家继续优化。
首先来看效果图:
我们都知道现在大多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;}}
那么问题又来了,如果时间长了,我们的数据库中和本地文件的缓存中肯定有很多的数据,这样肯定不好,这儿我用一个线程去检查数据库中所有的数据,然后看他们的end是否过期,如果过期就把这条数据和它对应的本地文件删了。这样就不会有数据冗余的情况了。
// 启动一个线程,去删除过期的广告信息new Thread(new Runnable() {@Overridepublic void run() {for (Ad ad : alist) {if (isDeadline(ad)) {// 如果当前广告过期,则删除数据库中的记录,和本地的文件AdvertiseUtil.deleteCachedAdverImg(context, ad);AdvertisementDao.deleteAd(ad);}}}}).start();}
到此,一个简单的启动页广告就ok了,当然,如果用到实际项目中的话,还需要大家继续优化。
源码下载
更多相关文章
- Android中WebView使用解析
- Android实现 广告识别之 广告库
- Android(安卓)Glide 使用
- Android照片墙瀑布流的实现与思考
- RxCache--打造自己的Android缓存框架
- Fragment 视图重绘问题
- Android(安卓)的 ApkTool 反编译 apk xml 和去广告
- webview 设定和使用缓存来获取网页中的js,css和图片资源
- Android(安卓)Glide图片缓存原理及手写实现