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

来源:互联网 发布:金和网络 陈耀泉 编辑:程序博客网 时间:2024/05/24 06:38

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

1.准备工作

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

每日必应图片数据的获取,访问这个网址就可以获取到每日的json数据。
http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1 


{    "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

0 0
原创粉丝点击