一、创建默认磁贴

  创建默认磁贴,不需要任何代码只有制作几张图片就可以了。

  1.创建工程之后,在工程目录找到package.appxmanifest,打开它。

  2.在应用程序栏,通知选项,选择徽章和图块文本。

     

  3.然后切换到可见资产栏,右边有几个初始选项。图块(磁贴)旁边有一个显示名称选项,一个正方形150*150的磁贴,一个是310*150的,

分别对应着开始屏幕中切换磁贴大小的最大和中等大小模式,只有这两种才能下显示名称,还有一种更小的图标是不能显示名称了,因为它已经够

小了,还要显示文本就显示不下了。然后是背景色,我们默认为transparent透明,因为自从8.1开始微软就开始吧开始屏幕支持了透明的特性,这

样就可以在开始屏幕设置壁纸,透过磁贴就能看到开始屏幕的壁纸。

  磁贴总共有三种尺寸的图标:

  1.71*71正方形徽标:开始屏幕磁贴最小的一种形式,只显示图标不能显示文字,Square71x71Logo.png

  2.150*150正方形徽标:开始屏幕磁贴中等大小的一种,默认创建就是这个尺寸,可以显示文字,多任务列表显示的也是这个图标,Logo.png

  3.310*150长方形徽标:开始屏幕最大的一种磁贴,可以显示名称,WideLogo.png

  应用列表的Icon:

  44*44正方形徽标:应用列表的图标,SmallLogo.png

  应用商店徽标:

  50*50,StoreLogo.png

  徽章徽标:

  24*24,BadgeLogo.png,默认锁屏通知提醒的图片。

  初始屏幕有初始屏幕背景色和初始屏幕图片两个设置。SplashScreen.png

  

 一般图像需求

  磁贴和 Toast 源图像的尺寸必须小于或等于 1024x1024 像素,文件大小必须小于或等于 200 KB,类型必须为 .png、.jpg、.jpeg 或 .gif。图像没有位深或颜色需求,只要它满足其他需求。

  以上所有图片都有放大140倍和240倍的图片设置,这些图片会加上.scale-140.png或.scale-240.png

  

二、发送磁贴更新

  磁贴有很多种,模板枚举TileTemplateType提供各种各样的正方形、长方形、带图片等待非常多,具体可以到这https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/windows.ui.notifications.tiletemplatetype.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1查看。

  我们看其中一种TileWide310x150ImageAndText01,这是310*150的模板,可以显示文本和图片。我们看一下Xml模板结构:

  

<tile>
<visual version="2">
<binding template="TileWide310x150ImageAndText01" fallback="TileWideImageandText01">
<image id="1" src="ms-appx:///assets/redWide.png"/>
<text id="1">Hello World! My very own tile notification</text>
</binding>
</visual>
</tile>

  和Toast一样,磁贴也是通过Xml解析模板编辑Xml来修改或创建更新内容,所以这两个namspace是必选的。

using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;

  然后在我们的例子里添加一个AppBarButton来发送更新,一个来清除更新

<Page.BottomAppBar>
<CommandBar>
<CommandBar.PrimaryCommands>
<AppBarButton Label="更新磁贴" Click="AppBarButton_Click"/>
  
          <AppBarButton Label="清除更新" Click="AppBarButton_Click_1"/>
            </CommandBar.PrimaryCommands>
</CommandBar>
</Page.BottomAppBar>

  在Click事件里写下发送更新代码:

 private void AppBarButton_Click(object sender, RoutedEventArgs e)
{
//获取310*150的磁贴模板Document对象
XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWide310x150ImageAndText01);
//磁贴文本,如果指定了显示应用名称,文本将会显示在应用名称上方
XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
tileTextAttributes[].InnerText = "内容更新了哦!!";
//磁贴图片
XmlNodeList tileImageAttributes = tileXml.GetElementsByTagName("image");
((XmlElement)tileImageAttributes[]).SetAttribute("src", "http://pic.cnr.cn/pic/guoji/20150201/W020150201362994790722.jpg");
//建立TileNotification
TileNotification tileNotification = new TileNotification(tileXml);

        //五分钟之后清除更新
        tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddMinutes(5);

//立即发送更新
TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification); }

  磁贴中图片支持三种图片来源,一种是应用程序包,还有支持应用的本地存储和网络图片。

  应用程序包前缀:”ms-appx:///”,如assets目录下的图片:”ms-appx:///assets/redWide.png”

  本地存储空间:”ms-appdata:///local/”,如”ms-appdata:///local/redWide.png”

  网络图片:”http://”或”https://”,如”http://www.contoso.com/redWide.png”

  ps:模板中使用的图像都要求大小小于 200 KB,小于 1024 x 1024 像素。

  微软是建议我们最好设置磁贴更新的过期时间,而不是手动的清除它,当然清除它也很简单,一句代码就够了,TileUpdateManager.CreateTileUpdaterForApplication().Clear();

  默认图片有点呵呵,不知道会不会被和谐。。。,更新的图片是百度随便找的。

  

三、发送锁屏提醒更新

  锁屏提醒有两种形式,一种是显示数字,一种是显示字符。它的模板枚举类是BadgeTemplateType,数字是BadgeNumber,

字符是BadgeGlyph。

  更新锁屏提醒:

private void AppBarButton_Click_2(object sender, RoutedEventArgs e)
{
//用一个计数器,奇数就显示文字偶数显示数字
XmlDocument badgeXml = BadgeUpdateManager.GetTemplateContent(counter % == ? BadgeTemplateType.BadgeGlyph : BadgeTemplateType.BadgeNumber);
XmlElement badgeElement = (XmlElement)badgeXml.SelectSingleNode("/badge");
//两种模板都是value这个值
badgeElement.SetAttribute("value", counter % == ? "" + counter : "您有新的信息哦");
BadgeNotification badge = new BadgeNotification(badgeXml);
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badge);
counter++; }

  清除锁屏:

private void AppBarButton_Click_3(object sender, RoutedEventArgs e)
{
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
}

  更新了锁屏提醒,磁贴的角标也会更新哦,三种尺寸的磁贴都角表数字提醒。但是更新到锁屏好像不是很及时哦,并且前提是一定要在锁屏的通知程序选上自

己的,通知详细也得选自己的,要不然文本形式的锁屏提醒就看不到的哦!

  

WP8.1学习系列(第三章)——磁贴和锁屏通知的更多相关文章

  1. WP8.1学习系列(第十七章)——Windows Phone重要图形、视觉指示器和通知

    美感在手机应用中是不可或缺的,它是直观操作的代名词.在 Windows Phone 中,你的磁贴.初始屏幕.图标.控件和导航的视觉元素会引起用户对应用程序内的相关任务.优先事项或操作的注意,并采用新颖 ...

  2. WP8.1学习系列(第二十三章)——到控件的数据绑定

    在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...

  3. WP8.1学习系列(第十七章)——交互UX之输入和反馈模式

    如果你将 Windows 应用商店应用设计为触摸交互,则可免费获取对触摸板.鼠标.笔和键盘交互的支持.你的用户可以从一种输入法切换到另一种,而不会丧失应用体验的感觉.将键盘插入平板电脑?没问题.你的应 ...

  4. WP8.1学习系列(第十一章)——中心控件Hub开发指南

    在本文中 先决条件 什么是中心控件? 添加中心控件 将分区添加到中心 添加交互式分区头用于导航 将展示磁贴添加到中心 使用窄应用中的垂直中心 借助中心使用语义式缩放视图 摘要和后续步骤 重要的 API ...

  5. WP8.1学习系列(第四章)——交互UX之导航模式

    交互模式和指南 这部分包括三部分内容,分别是导航模式.命令模式和输入模式. 导航模式 虽然 Windows 导航模式提供了框架,但它提倡创新.激发你的创造力并在已建立的模式上构建. 命令模式 使用应用 ...

  6. WP8.1学习系列(第二十七章)——ListView和GridView入门

    快速入门:添加 ListView 和 GridView 控件 (XAML)   在本文中 先决条件 选择 ListView 或 GridView 将项添加到项集合 设置项目源 指定项目的外观 指定视图 ...

  7. WP8.1学习系列(第二十一章)——本地应用数据

    了解如何存储和检索本地应用数据存储中的设置和文件. 路线图: 本主题与其他主题有何关联?请参阅: 使用 C# 或 Visual Basic 的 Windows 运行时应用的路线图 使用 C++ 的 W ...

  8. WP8.1学习系列(第七章)——应用选项卡Pivot交互UX

    “应用选项卡”模式用于用户经常在中间导航的多个 UI 页面.如果你的应用基于单个主题(例如,电影.棒球等),该模式尤其有用.每页都将为用户显示与该应用呈现的整体数据相关的一些内容.“应用选项卡”模式可 ...

  9. WP8.1学习系列(第六章)——中心控件Hub面板部分交互UX

    本主题中呈现的模型类似于适用于 Windows Phone 的具有主页菜单(中心或透视控件)的中心应用中描述的模型.正如之前的案例所示,你要向用户呈现不同的功能区域.此处的区别在于你可以在顶层呈现所有 ...

随机推荐

  1. Linq“条件排序”

    StockQuantities.OrderBy(u=>u.Status==null) 该排序先排结果为0(false)的,再排结果为1(true)的 使用场景: 一个对象有上传时间(可以为空)和 ...

  2. C# 线程安全与 lock锁

    如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的.  或者说:一个类或者 ...

  3. IntelliJ IDEA Default Keymap

    Alt+回车 导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get ...

  4. c#解析XML文件来获得pascal_voc特定目标负样本

    近期在做船仅仅识别方面的事情,须要大量的负样本来训练adaboost分类器. 我从网上下载到一个pascal_voc的数据集.须要找到不包括船仅仅的那些复制出来. 数据集特点 对于每一个图片有一个xm ...

  5. thikphp5.0 ip地址库 解决卡顿问题 curl_init

    使用淘宝新浪的地址库非常的使用,但是调用有时候会出现很慢.会导致卡在当前网页. 要想不影响当前速度,因此要使用 curl_init功能. 项目案例:会员登陆日志 user_log 字段:id,user ...

  6. 你可能不知道UED和UCD

    我们都知道UI是User Interface,即它的本意是用户界面,从字面上看是用户和界面组成,实际上还包括用户与界面之间的交互关系.UI最初对大家来说只是一个名词,它代表一些界面.当然重点还是是UI ...

  7. ClientScript.GetCallbackEventReference实现局部刷新

    使用ClientScript.GetCallbackEventReference实现局部刷新是.NET支持的一种前后台代码调用的方式:其实实现局部刷新这样方式有很多种,最经典也常用的莫过于jQuery ...

  8. highcharts学习1----Line charts

    今天开始将之前使用的highcharts控件的经验进行总结和整理,一方面方便自己以后使用查询,同时也为正在学习的人们做一些指引,算是资源分享吧. 官网链接: http://www.highcharts ...

  9. php5.4转5.3被替换的函数

    今天服务器由于业务需求,需要换成php5.4版本,以前使用的5.3,有些函数过期,导致了许多问题 1.ereg() 使用 preg_match() 替代 int preg_match ( string ...

  10. ABBYY FineReader 12中的用户模式你会用吗

    在ABBYY FineReader 12OCR文字识别软件中,有一个概念叫“训练”,它是在字符图像和字符本身之间建立对应关系的过程,训练模式可以提高含有装饰字体的文档或包含特殊字符(例如数学符号)文档 ...