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

时间:2021-03-04 15:58:01


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. }
复制代码
更多图片  小图  大图
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
点击放大 Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)
<ignore_js_op>
Windows phone 开发基础(14) WP8磁贴分两种的创建方式(内建和外建)

PhoneApp1.rar

 

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

 

源码包