- 文末
===============================================================
为了增强用户的体验,所以增加了这个每日弹窗,每日弹窗顾名思义,每天弹出一次,就不再弹窗,当然如果用户觉得烦的话,可以在弹窗中勾选上不再弹窗,或者在应用设置中,关闭每日弹窗都是可以的。下面来写这个功能。
===============================================================
说到弹窗我就想起来我之前的应用更新弹窗那一篇文章了,那么这个功能怎么来写呢?其实也不难,首先想清楚这个弹窗要什么东西。
① 是弹窗的背景,我希望每一天都不一样,那么就可以采用必应的每日一图。
② 弹窗可关闭不再弹出,可以通过缓存的方式判断处理,
③ 弹窗上面显示的值,可以通过主页面其它接口先获取到返回值,然后在弹窗中显示,
④ 每日只弹出一次,这个就是要在每日弹出弹窗时,存储一个时间戳缓存,后面再进入APP时判断时间大小就可以了。
这么一看,目标就明确了,下面进入实操环节。
还记得之前我在写壁纸页面的时候,把必应的请求放到壁纸管理页面了,那么主页面就没有请求了,而我又需要这个请求获取每日的壁纸url。所以在欢迎页面新增了一个请求。
打开SplashContract,新增如下代码:
/**
- 获取必应 每日一图
*/
public void biying() {
ApiService service = ServiceGenerator.createService(ApiService.class, 1);
service.biying().enqueue(new NetCallBack() {
@Override
public void onSuccess(Call call, Response response) {
if (getView() != null) {
getView().getBiYingResult(response);
}
}
@Override
public void onFailed() {
if (getView() != null) {
getView().getDataFailed();
}
}
});
}
/**
-
获取必应每日一图返回
-
@param response BiYingImgResponse
*/
void getBiYingResult(Response response);
增加位置如下:
然后进入SplashActivity,重写getBiYingResult方法,代码如下:
/**
-
必应壁纸数据返回
-
@param response BiYingImgResponse
*/
@Override
public void getBiYingResult(Response response) {
if (response.body().getImages() != null) {
//得到的图片地址是没有前缀的,所以加上前缀否则显示不出来
String biyingUrl = “http://cn.bing.com” + response.body().getImages().get(0).getUrl();
SPUtils.putString(Constant.EVERYDAY_TIP_IMG,biyingUrl,context);
} else {
ToastUtils.showSho