Android使用每日必应美图作为启动页背景图片

微软必应每天都会更新一张很美的图片作为网站的背景,拿来做启动页背景也是美美哒。

1.准备工作

网络请求:OKHttp
图片加载:Picasso

每日必应图片数据的获取, 访问这个网址就可以获取到每日的json数据。


{
    "images": [
        {
            "startdate": "20170305",
            "fullstartdate": "201703051600",
            "enddate": "20170306",
            "url": "/az/hprichbg/rb/SteepSheep_ZH-CN8716398488_1920x1080.jpg",
            "urlbase": "/az/hprichbg/rb/SteepSheep_ZH-CN8716398488",
            "copyright": "瓦莱黑鼻羊,瑞士瓦莱州 (© Alessandra Meniconzi/Solent News/REX/Shutterstock)",
            "copyrightlink": "http://www.bing.com/search?q=%E9%BB%91%E9%BC%BB%E7%BE%8A&form=hpcapt&mkt=zh-cn",
            "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20170305_SteepSheep%22&FORM=HPQUIZ",
            "wp": true,
            "hsh": "c737af458c5e07aa3fc472220d828ec9",
            "drk": 1,
            "top": 1,
            "bot": 1,
            "hs": []
        }
    ],
    "tooltips": {
        "loading": "正在加载...",
        "previous": "上一个图像",
        "next": "下一个图像",
        "walle": "此图片不能下载用作壁纸。",
        "walls": "下载今日美图。仅限用作桌面壁纸。"
    }
}


可以比较清楚的看到,images标签下的url正式图片的请求的地址,利用JsonObject可以轻松提取到数据。可以看到图片分辨率为1920x1080的,满足了大部分的需求。
/**
     * 解析json数据
     * @param data
     * @return
     */
    private String resolveData(String data) {

        String url = "";
        try {
            JSONArray jsonArray = new JSONObject(data).getJSONArray("images");

            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = (JSONObject) jsonArray.get(i);
                if (jsonObject.has("url")) {

                    url = jsonObject.getString("url");
                }
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return url;
    }


2.示例工程

目录结构:
模仿使用MVP框架模式,这里不做介绍。
V层,新建StartActivity,实现IStartView接口。
P层,负责倒计时,逻辑控制
M层,请求数据,解析数据

几处关键的方法:
P层计时:
  /**
     * 倒计时
     *
     * @param time 隔几秒进入主界面
     */
    private void countDown(int time) {
        Timer timer = new Timer(true);
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {

                iStartModel.cancelRequest();
                iStartView.goMainActivity();
            }
        };
        //time秒之后执行取消请求数据操作,跳转到主界面
        timer.schedule(timerTask, time);
    }

   @Override
    public void getData() {
        if (NetUtil.isConnected()) {

            countDown(3500);

            iStartModel.requsetData(new LocalImageCallback() {
                @Override
                public void success(String url) {
                    iStartView.showStartInfo(url);
                }

                @Override
                public void fail(String msg) {

                }
            });
        } else {

            //当前无网络,可以提示用户打开设置,或者直接进入主界面。
            countDown(1000);
        }

    }

对源码感兴趣的请访问: 点击打开链接

本文地址:http://blog.csdn.net/prodigalwang/article/details/60599754

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值