WP8磁贴分两种 1. 应用程序自带的 都有且不能删除只能修改 2. 次要次贴 可以自己生成修改
当然无论是哪种tile 他们都具有想类似的设置和属性 看上一篇介绍 废话少说,直接上code
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Navigation;
- using Microsoft.Phone.Controls;
- using Microsoft.Phone.Shell;
- using PhoneApp1.Resources;
-
- namespace PhoneApp1
- {
- public partial class MainPage : PhoneApplicationPage
- {
- // 构造函数
- public MainPage()
- {
- InitializeComponent();
- }
-
- /**
- Tile - 磁贴
- * Tile 的大小是173
- * 173宽 Tile 的大小 356
- * 173需要把 manifest 中的 <TemplateType5> 修改为 <TemplateType6>但是不会通过微软审核
- * Tile 分为应用程序磁贴Application Tile和次要磁贴Secondary Tile
- * 程序无虑如何都有一个 Application Tile无论它是否被固定到了开始屏幕只能更新它不能创建和删除而 Secondary Tile 是可以创建、更新和删除的Secondary Tile 如果存在一定是在开始屏幕上
- */
-
-
-
- /* *
- 注意
- * 创建次要磁贴时背景图必须使用本地资源程序包内或独立存储中如果是独立存储则图像必须位于 Shared/ShellContent
- * 更新应用程序磁贴或次要磁贴时可以使用本地资源或远程资源来更新背景图像
- * 磁贴图像可以是 jpg 或 png 或 gif只显示第一帧png 或 gif 的透明区域的背景会呈现主题色
- * 当使用远程图像时不能是https要小于80KB必须30秒内下载完
- */
-
-
-
- /** StandardTileData - 用于描述 Tile 的数据
- * Title - 正面标题
- * BackgroundImage - 正面背景
- * Count - 正面显示的 badge 徽章范围 1 - 99
- * BackTitle - 背面标题
- * BackBackgroundImage - 背面背景
- * BackContent - 背面内容
- *
- *
- * ShellTile - 用于管理应用程序Tile和次要Tile
- * Update(StandardTileData data) - 使用指定的 Tile 数据更新已有的 Tile 信息
- * Delete() - 删除此 Tile
- * NavigationUri - 此 Tile 的导航地址
- *
- * ShellTile.ActiveTiles - 固定到开始屏幕的 Tile 集合。注意其第一个元素必然是 application tile无论其是否被固定到了首页
- * ShellTile.Create(Uri navigationUri, ShellTileData initialData) - 创建一个新的 Secondary Tile如果有 Secondary Tile其必然是被固定到开始屏幕的
- * navigationUri - 点击 Tile 后所导航到的地址此值相当于 key 值不能重复
- * initialData - 需要创建的 Tile 数据
- */
-
-
- private void Button_Click_1(object sender, RoutedEventArgs e)
- {
- var btn = sender as Button;
- if (btn == null) return;
- string tag = btn.Tag.ToString();
- if ("flag1" == tag)
- {
- // 应用程序tile更新
-
- ShellTile TileToFind = ShellTile.ActiveTiles.First();
- // 设置要更新的一些属性
- StandardTileData NewTileData = new StandardTileData
- {
- Title = "tile header",
- BackTitle = "back",
- BackContent = "亲沁,您有2条新的消息哟",
- Count = 2,
-
- // local Resource
- BackgroundImage = new Uri(@"20090318230037405.png", UriKind.Relative),
- BackBackgroundImage = new Uri(@"20090318230037473.png", UriKind.Relative),
-
- // remote
- //BackgroundImage
- //BackBackgroundImage
-
- // shellcontent
- //BackgroundImage
- //BackBackgroundImage
- };
- // 更新
- TileToFind.Update(NewTileData);
-
- }
- else if ("flag2" == tag)
- {
- // 次要tile创建
-
- // 查找所有中符合实例
- ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
-
- // 如果不存在就创建
- if (TileToFind == null)
- {
- //设置一些属性
- StandardTileData NewTileData = new StandardTileData
- {
- Title = "次要磁贴",
- BackTitle = "我在这里o",
- BackContent = "Hi,你有一条新的消息。",
- Count = 1,
- BackgroundImage = new Uri("20090318230038555.png", UriKind.RelativeOrAbsolute),
- BackBackgroundImage = new Uri("20081111083224898.png", UriKind.RelativeOrAbsolute),
-
- };
-
- // 创建
- ShellTile.Create(new Uri("/SubTile.xaml?act=subtile", UriKind.Relative), NewTileData);
- }
-
- }
- else if ("flag3" == tag)
- {
- // 次要tile更新
-
- ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
-
- if (null != TileToFind)
- {
- StandardTileData updateTileData = new StandardTileData
- {
- Title = "更新次要磁贴",
- Count = 34,
- BackContent = "背景内容也更新",
-
- };
-
- TileToFind.Update(updateTileData);
- }
-
-
- }
- else if ("flag4" == tag)
- {
- // 次要tile删除
-
- ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("act=subtile"));
-
- if (null != TileToFind)
- {
- TileToFind.Delete();
- }
-
-
- }
- else if ("flag5" == tag)
- {
- // 实施计划任务更新
- /** ShellTileSchedule - 用于按计划更新磁贴的正面背景图
- * new ShellTileSchedule() - 更新 Application Tile
- * new ShellTileSchedule(ShellTile tile) - 更新指定的 Secondary Tile
- *
- * Recurrence - 更新计划的模式
- * UpdateRecurrence.Interval - 定时更新
- * UpdateRecurrence.Onetime - 只更新一次
- * Interval - 定时更新时的更新间隔只能是 每小时/每天/每星期/每月
- * MaxUpdateCount - 最大的更新次数默认值是 0即无限次更新
- * StartTime - 开始更新的时间
- * RemoteImageUri - 需要更新的图像的远程地址
- *
- * Start() - 启动计划
- * Stop() - 停止计划
- *
- *
- * 注意
- * 具体更新时间点是由系统统一调度的系统每隔一段时间会批处理所有程序的更新计划这么做是为了省电也就是说即使你设置了
- StartTime = DateTime.Now也不会马上更新但是一个小时内应该会更新
- * 如果更新计划失败比如找不到远程图像远程图像大于80KB超过30秒还没下载完等次数太多则该更新计划会被系统自动取消
- */
- ShellTile TileToFind = ShellTile.ActiveTiles.First();
-
- if (null != TileToFind)
- {
- ShellTileSchedule sts = new ShellTileSchedule(TileToFind);
- //sts.Interval = UpdateInterval.EveryHour;
-
- sts.Recurrence = UpdateRecurrence.Interval;
- sts.StartTime = DateTime.Now;
- sts.RemoteImageUri = new Uri("http://z.k1982.com/png/up/200902/20090207032006183.png",UriKind.Absolute);
- sts.Start();
- }
-
-
- }
- else
- {
- // 异常或其他
- // MessageBox.Show("不要乱来哈,s货");
- }
-
-
-
- }
-
- }
- }
复制代码
|