Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)



WP8磁贴分两种 
        1. 应用程序自带的 都有且不能删除只能修改
        2. 次要次贴 可以自己生成修改

         当然无论是哪种tile 他们都具有想类似的设置和属性 看上一篇介绍
       
         废话少说,直接上code
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Navigation;
  8. using Microsoft.Phone.Controls;
  9. using Microsoft.Phone.Shell;
  10. using PhoneApp1.Resources;
  11. namespace PhoneApp1
  12. {
  13.     public partial class MainPage : PhoneApplicationPage
  14.     {
  15.         // 构造函数
  16.         public MainPage()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         /** 
  21.             Tile - 磁贴  
  22.             *     Tile 的大小是173 
  23.             * 173宽 Tile 的大小 356 
  24.             * 173需要把 manifest 中的 <TemplateType5> 修改为 <TemplateType6>但是不会通过微软审核  
  25.             *     Tile 分为应用程序磁贴Application Tile和次要磁贴Secondary Tile  
  26.             *     程序无虑如何都有一个 Application Tile无论它是否被固定到了开始屏幕只能更新它不能创建和删除而 Secondary Tile 是可以创建、更新和删除的Secondary Tile 如果存在一定是在开始屏幕上  
  27.             */
  28.         /* * 
  29.             注意              
  30.             * 创建次要磁贴时背景图必须使用本地资源程序包内或独立存储中如果是独立存储则图像必须位于 Shared/ShellContent              
  31.             * 更新应用程序磁贴或次要磁贴时可以使用本地资源或远程资源来更新背景图像              
  32.             * 磁贴图像可以是 jpg 或 png 或 gif只显示第一帧png 或 gif 的透明区域的背景会呈现主题色              
  33.             * 当使用远程图像时不能是https要小于80KB必须30秒内下载完              
  34.             */
  35.          /** StandardTileData - 用于描述 Tile 的数据              
  36.             *     Title - 正面标题             
  37.             *     BackgroundImage - 正面背景              
  38.             *     Count - 正面显示的 badge 徽章范围 1 - 99              
  39.             *     BackTitle - 背面标题              
  40.             *     BackBackgroundImage - 背面背景              
  41.             *     BackContent - 背面内容              
  42.             *                   
  43.             *               
  44.             * ShellTile - 用于管理应用程序Tile和次要Tile              
  45.             *     Update(StandardTileData data) - 使用指定的 Tile 数据更新已有的 Tile 信息              
  46.             *     Delete() - 删除此 Tile              
  47.             *     NavigationUri - 此 Tile 的导航地址              
  48.             *                  
  49.             *     ShellTile.ActiveTiles - 固定到开始屏幕的 Tile 集合。注意其第一个元素必然是 application tile无论其是否被固定到了首页              
  50.             *     ShellTile.Create(Uri navigationUri, ShellTileData initialData) - 创建一个新的 Secondary Tile如果有 Secondary Tile其必然是被固定到开始屏幕的              
  51.             *         navigationUri - 点击 Tile 后所导航到的地址此值相当于 key 值不能重复              
  52.             *         initialData - 需要创建的 Tile 数据              
  53.             */ 
  54.         private void Button_Click_1(object sender, RoutedEventArgs e)
  55.         {
  56.             var btn = sender as Button;
  57.             if (btn == null) return;
  58.             string tag = btn.Tag.ToString();
  59.             if ("flag1" == tag)
  60.             { 
  61.                 // 应用程序tile更新
  62.                
  63.                 ShellTile TileToFind = ShellTile.ActiveTiles.First();
  64.                 // 设置要更新的一些属性
  65.                 StandardTileData NewTileData = new StandardTileData
  66.                 {
  67.                     Title       = "tile header",
  68.                     BackTitle   = "back",
  69.                     BackContent = "亲沁,您有2条新的消息哟",
  70.                     Count       = 2,
  71.                     // local Resource
  72.                     BackgroundImage     = new Uri(@"20090318230037405.png", UriKind.Relative),
  73.                     BackBackgroundImage = new Uri(@"20090318230037473.png", UriKind.Relative),
  74.                     
  75.                     // remote
  76.                     //BackgroundImage   
  77.                     //BackBackgroundImage 
  78.                     // shellcontent
  79.                     //BackgroundImage     
  80.                     //BackBackgroundImage 
  81.                 };
  82.                 // 更新
  83.                 TileToFind.Update(NewTileData);
  84.             }
  85.             else if ("flag2" == tag)
  86.             {
  87.                 // 次要tile创建
  88.                 // 查找所有中符合实例
  89.                 ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
  90.                 // 如果不存在就创建
  91.                 if (TileToFind == null)
  92.                 {
  93.                     //设置一些属性
  94.                     StandardTileData NewTileData = new StandardTileData
  95.                     {
  96.                         Title = "次要磁贴",
  97.                         BackTitle = "我在这里o",
  98.                         BackContent = "Hi,你有一条新的消息。",
  99.                         Count = 1,
  100.                         BackgroundImage = new Uri("20090318230038555.png", UriKind.RelativeOrAbsolute),
  101.                         BackBackgroundImage = new Uri("20081111083224898.png", UriKind.RelativeOrAbsolute),
  102.                      
  103.                     };
  104.                     // 创建
  105.                     ShellTile.Create(new Uri("/SubTile.xaml?act=subtile", UriKind.Relative), NewTileData);
  106.                 }
  107.             }
  108.             else if ("flag3" == tag)
  109.             {
  110.                 // 次要tile更新
  111.                 ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
  112.                 if (null != TileToFind)
  113.                 {
  114.                     StandardTileData updateTileData = new StandardTileData
  115.                     {
  116.                         Title = "更新次要磁贴",
  117.                         Count = 34,
  118.                         BackContent = "背景内容也更新",
  119.                     };
  120.                     TileToFind.Update(updateTileData);
  121.                 }
  122.             }
  123.             else if ("flag4" == tag)
  124.             {
  125.                 // 次要tile删除
  126.                 ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
  127.                 if (null != TileToFind)
  128.                 {
  129.                     TileToFind.Delete();
  130.                 }
  131.             }
  132.             else if ("flag5" == tag)
  133.             {
  134.                 // 实施计划任务更新
  135.                 /** ShellTileSchedule - 用于按计划更新磁贴的正面背景图  
  136.                 *     new ShellTileSchedule() - 更新 Application Tile  
  137.                 *     new ShellTileSchedule(ShellTile tile) - 更新指定的 Secondary Tile  
  138.                 *       
  139.                 *     Recurrence - 更新计划的模式  
  140.                 *         UpdateRecurrence.Interval - 定时更新  
  141.                 *         UpdateRecurrence.Onetime - 只更新一次  
  142.                 *     Interval - 定时更新时的更新间隔只能是 每小时/每天/每星期/每月  
  143.                 *     MaxUpdateCount - 最大的更新次数默认值是 0即无限次更新  
  144.                 *     StartTime - 开始更新的时间  
  145.                 *     RemoteImageUri - 需要更新的图像的远程地址  
  146.                 *   
  147.                 *     Start() - 启动计划  
  148.                 *     Stop() - 停止计划  
  149.                 *       
  150.                 *   
  151.                 * 注意  
  152.                 * 具体更新时间点是由系统统一调度的系统每隔一段时间会批处理所有程序的更新计划这么做是为了省电也就是说即使你设置了 
  153.                         StartTime = DateTime.Now也不会马上更新但是一个小时内应该会更新  
  154.                 * 如果更新计划失败比如找不到远程图像远程图像大于80KB超过30秒还没下载完等次数太多则该更新计划会被系统自动取消  
  155.                 */
  156.                 ShellTile TileToFind = ShellTile.ActiveTiles.First();
  157.                 if (null != TileToFind)
  158.                 {
  159.                     ShellTileSchedule sts = new ShellTileSchedule(TileToFind);
  160.                     //sts.Interval = UpdateInterval.EveryHour;
  161.                   
  162.                     sts.Recurrence = UpdateRecurrence.Interval;
  163.                     sts.StartTime = DateTime.Now;
  164.                     sts.RemoteImageUri = new Uri("http://z.k1982.com/png/up/200902/20090207032006183.png",UriKind.Absolute);
  165.                     sts.Start();
  166.                 }
  167.             }
  168.             else
  169.             {
  170.                 // 异常或其他
  171.                 // MessageBox.Show("不要乱来哈,s货");
  172.             }
  173.         }
  174.     }
  175. }
复制代码
更多图片 小图 大图
点击放大
点击放大
点击放大
点击放大
点击放大
点击放大
<ignore_js_op>

PhoneApp1.rar

 

1.26 MB, 阅读权限: 10, 下载次数: 7

 

源码包

posted @ 2013-04-03 10:07  BellingWP  阅读(299)  评论(0编辑  收藏  举报