一、创建默认磁贴

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

  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. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...

  2. Asp.net WebApi下载文件

    1,图片 var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(stream ...

  3. 测试webservice的时候,如果出现这个错误:"The test form is only available for requests from the local machine"

    测试webservice的时候,如果出现这个错误:"The test form is only available for requests from the local machine&q ...

  4. .net framework 4.0上跑webapi 1.0

    public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web AP ...

  5. 【转】Castle Windsor之组件注册

    [转]Castle Windsor之组件注册 注册方式较多,大体有这么几种,学习得比较粗浅,先记录: 1.逐个注册组件 即对每个接口通过代码指定其实现类,代码: container.Register( ...

  6. 架构师素养及从小菜进阶架构(CTO)的书籍【转】

    CTO要了解无线技术/搜索/大数据/数据库等. -- 通常定义架构有几个层次,这包括业务架构.产品架构.应用架构和技术架构: 1.业务架构:描述一个企业围绕一个行业做了哪些业务,例如支付行业的收单.退 ...

  7. CentOS系统很卡的基本排查方法

    来源:http://www.centoscn.com/CentOS/Intermediate/2017/1012/9032.html 一. 查看内存使用情况  1. free命令可查看内存使用情况 2 ...

  8. Yii2查询之where条件拼装

    目录 1 语法 2 哈希格式 3 运算符格式 3.1 对比 3.2 and 3.3 or 3.4 not 3.5 between和not between 3.6 in和not in 3.7 like ...

  9. 正则表达式sed

    sed  能实现grep查找的功能,还可以替换指定的字符. 匹配查找文件中root字符(其中的 -n表示段落,p表示打印出来print) [root@localhost sed]# sed -n '/ ...

  10. Hive性能分析和优化方法

    Hive性能分析和优化方法 http://wenku.baidu.com/link?url=LVrnj-mD0OB69-eUH-0b2LGzc2SN76hjLVsGfCdYjV8ogyyN-BSja5 ...