必應(yīng)壁紙接口我在網(wǎng)上找了很多大體都是第三方經(jīng)過加工,所以穩(wěn)定性不太清楚能不能長久使用也不清楚。
于是乎我找了很久在https://stackoverflow.com上找到了感覺還算官方的接口。
正如下面所示,有三種格式,我采用的是json格式贞言。
參數(shù)有四個,format阀蒂,idx蜗字,n,和mkt脂新。idx就是索引吧挪捕,我猜的應(yīng)該是0到14吧,表示半個月的壁紙争便,從當(dāng)前日期開始查级零,n應(yīng)該是一次查詢的數(shù)量,后面的mkt應(yīng)該就是國家的設(shè)置滞乙,這個可以自己試試奏纪,訪問json連接會返回一串json。
XML:http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US
JSON:http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=en-US
RSS:http://www.bing.com/HPImageArchive.aspx?format=rss&idx=0&n=1&mkt=en-US
Json數(shù)據(jù)如下圖所示:
然后打開VS創(chuàng)建一個UWP項目命名可以隨意斩启。
然后在資源目錄新建個json文件序调,為了方便我就不在線獲取json了,把之前瀏覽器返回的json貼到這個文件里兔簇。
此時比較重要的一件事就是將此文件屬性的生成操作更改為內(nèi)容不然會報錯发绢。
這些做完以后就可以進行下面的壁紙獲取操作了。在項目里新建一個Models文件夾垄琐,在文件夾里新建兩個類边酒,命名根據(jù)自己需要。一個類是為了反序列化壁紙json的狸窘,我用的是WallpapersData墩朦。
在WallpapersData類里選擇編輯然后選擇性粘貼,就可以將之前的壁紙json粘貼成類翻擒。
粘貼以后大致就圖所示結(jié)構(gòu)
然后另外的一個類就是用來保存處理之后的壁紙內(nèi)容了氓涣。目前我就設(shè)置了兩條信息。
在mainPage里寫入如下的代碼
<Page
x:Class="BingWallpapers.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:BingWallpapers"
xmlns:data="using:BingWallpapers.Models"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Loaded="Page_Loaded"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<GridView x:Name="GV">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:WallpapersDetail">
<StackPanel>
<TextBlock Text="{x:Bind Title}"/>
<Image Source="{x:Bind Source}"/>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>
</Page>
然后在后臺代碼里寫入如下代碼
記得要安裝Newtonsoft.json庫
using BingWallpapers.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x804 上介紹了“空白頁”項模板
namespace BingWallpapers
{
/// <summary>
/// 可用于自身或?qū)Ш街?Frame 內(nèi)部的空白頁陋气。
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private async void Page_Loaded(object sender, RoutedEventArgs e)
{
//此集合為GridView的source
ObservableCollection<WallpapersDetail> picModels = new ObservableCollection<WallpapersDetail>();
//json文件的url
Uri uri = new Uri("ms-appx:///Assets/file.json");
var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
//讀取的json文本
string text = await Windows.Storage.FileIO.ReadTextAsync(file);
//然后反序列化成類
WallpapersData wallPaperModel = Newtonsoft.Json.JsonConvert.DeserializeObject<WallpapersData>(text);
//通過重新組裝成集合給GridView
foreach (var item in wallPaperModel.images)
{
picModels.Add(new WallpapersDetail()
{
Title = item.copyright,
Source = "https://www.bing.com" + item.url
});
}
GV.ItemsSource = picModels;
}
}
}
大致就接近尾聲了最終來張效果圖
雖然代碼簡單還是貼上來吧劳吠,首次在簡書寫帖子多多關(guān)照https://github.com/zgj1995/BingWallpapers