天天看點

馬甯的Windows Phone 7.1初體驗(三)——Tile

前邊介紹Push Notification時,其實已經談到了Tile Notification。在Windows Phone 7.1中,Smart Tile得到了極大的提高。我們不但可以控制Tile的動畫顯示、内容和背景切換,而且還能夠為同一個應用提供兩個Tile,比如一個天氣預報的應用程式,就可以在手機的首頁上顯示多個Tile,一個是北京的天氣,另一個是上海的天氣等。

MSDN上的文章寫的又臭又長,其實挺簡單的事情,弄得那麼複雜。我試着改寫了一下例子,加入到應用的一個Button點選事件裡:

首先,我們要引用Microsoft.Phone.Shell命名空間,然後通過ShellTile.ActiveTiles.First()方法來擷取應用最主要的ShellTile.每個應用至少會有一個Tile,是以不用擔心該對象為空。然後我們建立一個StandardTileData對象,為其中的屬性指派。屬性分為兩組,每組都會有背景圖檔、标題和内容,顯示位置如下圖所示。如果設定兩組Tile屬性,則Tile在顯示一段時間後會自動切換。最後,我們調用ShellTile對象的Update方法,将StandardTileData對象傳遞進去,就完成了新Tile的設定。BackgroundImage和BackBackgroundImage指定的是圖檔的URI,可以是本地的圖檔,也可以是來自網絡的圖檔。我們使用的兩個圖檔,都是以Content方式加入到工程中的圖檔。

<a href="http://images.cnblogs.com/cnblogs_com/aawolf/201108/201108030235567616.jpg"></a>

當我們将程式部署到裝置或模拟器上時,首先會在Application List裡出現對應的圖示。我們長按圖示,會出現一個菜單,選擇Pin to start,會将應用程式的圖示顯示到手機首頁上。

運作應用程式,點選Button後,Tile會被更新成新的式樣。兩張背景和内容會交替顯示,顯示效果如下圖所示:

在完成了Application Tile的顯示之後,我們接下來要實作更複雜的Secondary Tile,當然,我們可以添加多個Tile。在實作Secondary Tile時,有兩個技術點需要實作,一個是Tile的添加與顯示;另一個則是,程式啟動時如何區分是由哪個Tile點選啟動應用的。

首先,我們來看如何添加Secondary Tile的代碼:

首先調用ShellTile.ActiveTiles.FirstOrDefault方法,擷取在NavigationUri屬性中包含“DefaultTitle=FromTile”字樣的ShellTile對象,如果擷取到的ShellTile對象為空,則建立Secondary Tile,否則調用ShellTile的Delete方法,删除這個Tile。

建立Secondary Tile的過程,首先建立StandardTileData對象,将顯示的各個參數進行指派,這一步與Application Tile相同;然後,調用ShellTile的Create方法,第一個參數是URI,即點選該Tile後,調用Page的指令行,可以包含參數,第二個參數是StandardTileData對象,用于指定顯示式樣。

需要注意的是,如果Page指令行指定不對,會引起使用者點選Tile時,應用直接退出,由于無法調試,第一次接觸這個問題時,會找不到具體的原因。

Secondary Tile顯示效果如下:

接下來,我們就要處理區分不同Tile點選的事件了,需要重載MainForm的OnNavigatedTo方法:

通過NavigationContext.QueryString的TryGetValue方法來擷取DefaultTitle參數的值,如果無法擷取到該值,則認為該點選來自第一個Tile,相反則來自第二個Tile。我們将參數顯示在首頁面的文本框裡,當然,實際應用中可以有更加複雜的業務邏輯。界面顯示效果如下:

<a href="http://images.cnblogs.com/cnblogs_com/aawolf/201108/20110803023559421.jpg"></a>

到這裡,我們簡單介紹了如何添加Tile、修改Tile内容,除此之外,還有如何修改Tile的初始值,指定Tile更新的時間間隔等。在這裡,我們就不介紹了,大家可以參考又臭又長的MSDN文檔,這部分不長,我可以保證。

好了,到這裡,我們正式将Windows Phone 7.1中的Tile程式設計的内容介紹完了。Windows Phone采用的是HUB方式,對于功能進行分類,是以,就要求Tile具備更豐富的顯示方式和展現形式。而且,多個應用可以對應于一個Tile,同樣一個應用也可以對應多個Tile,這樣極大提高了首頁與應用之間互動的豐富程度。

當然,具體的Tile,還要在實際的開發中使用,才能真正了解其優缺點。

<a href="http://images.cnblogs.com/cnblogs_com/aawolf/201108/201108030236003519.jpg"></a>

OpenXLive杯Windows Phone遊戲開發大賽,是由OpenXLive聯合國内知名的開發者社群:DevDiv、智機網、WPMind、Silverlight銀光中國和XNA遊戲世界,一起舉辦的針對Windows Phone遊戲開發的比賽。

本文轉自馬甯部落格園部落格,原文連結:http://www.cnblogs.com/aawolf/archive/2011/08/03/2125692.html,如需轉載請自行聯系原作者

繼續閱讀