设为首页 收藏本站
查看: 1575|回复: 0

快速构建Windows 8风格应用34-构建Toast通知

[复制链接]

尚未签到

发表于 2015-5-23 11:12:55 | 显示全部楼层 |阅读模式
DSC0000.jpg
  引言
  开发过WindowsPhone应用或者使用过WindowsPhone手机的开发者都知道,我们会收到一些应用的提示信息,这些提示信息出现在手机的上端,并且停留几秒钟后会自动消失,当然如果我们点击弹出的信息会自动运行相应的应用程序,这种提示信息我们叫做通知。
  其实Windows 8 Store 应用也借鉴了Windows Phone上的提示信息,我们开发人员可以使自己应用程序在合适时间弹出相关提示信息,那么这些Windows 8 Store应用的提示信息,我们叫做Toast通知。
  并且Toast通知样式可以自定义的。例如:
DSC0001.png
    一、Toast通知概述
  Toast 通知是在屏幕右上角(对于从右到左 (Right-To-Left) 方向位于左上角)显示的通知。
  
       
  • Toast 通知可在应用上下文之外提供临时消息   
  • 用 toast 通知可立即吸引用户注意   
  • 用户可以永久关闭应用的 toast 通知   
  • 能够快速导航到应用中上下文相关的位置   
  • 很容易从应用本地或云端调用 toast 通知
  Toast 通知使用与动态磁贴类似的模板架构体系,有丰富的展现形式可以选择。
DSC0002.png
  更多关于Toast 通知概述可以参考:Toast 通知概述(Windows 应用商店应用) (Windows)
  二、Toast通知构建
  1,声明Toast通知功能
  打开Package.appxmanifest应用清单文件,“应用程序UI”选项卡中找到“支持Toast通知”设置为“是”。
DSC0003.png
  2,声明 Toast 通知背景色和文本颜色
  我们可以为 Toast 通知设置背景颜色和浅色或深色文本。注意:该设置同时适用Toast 和磁贴通知背景以及文本颜色。
DSC0004.png
  3,指定小徽标图像
  应用的小徽标图像显示在每个 Toast 通知的右下角,让用户识别引发通知的应用。
DSC0005.png
  4,添加命名空间声明
  
      1:  using Windows.UI.Notifications;
   2:  using Windows.Data.Xml.Dom;
  5,为 Toast 选取一个模板并检索其 XML 内容
  我们从系统提供的模板目录中选择一个适合的模板(详细的模板列表可参考 ToastTemplateType 枚举)。
  注意:我们发送的每个单独的通知都可以使用不同的模板。



   1:  ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;
   2:  XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
  这里我使用的是ToastImageAndText01 模板,该模版样式如下:
DSC0006.png
  6,为通知提供文本内容
  我们可以首先检索模板中标记名称为“text”的所有元素。
  ToastImageAndText01 模板只包含一个代码分配的文本字符串。该字符串最多可包含三行自动换行的字符串,因此我们应该相应地设置字符串的长度,以避免被截断。



   1:  XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
   2:   toastTextElements[0].AppendChild(toastXml.CreateTextNode("你好Windows 8!"));
  7,为通知提供图像
  我们可以首先检索模板中标记名称为“image”的所有元素。
  与磁贴不同,Toast 模板(如 ToastImageAndText01)最多包含一个图像。
  注意:并非所有 Toast 模板都包含图像,某些磁贴模板是仅文本的。



   1:  XmlNodeList toastImageAttributes = toastXml.GetElementsByTagName("image");
  然后我们可以从应用的程序包、本地存储或从 Web 使用图像。注意:该图像大小小于 200 KB,小于 1024 x 1024 像素。
  这里我以应用程序包的图像为例:



   1:  ((XmlElement)toastImageAttributes[0]).SetAttribute("src", "ms-appx:///Assets/SmallLogo.png");
   2:  ((XmlElement)toastImageAttributes[0]).SetAttribute("alt", "red graphic");
  8,指定Toast 持续时间或者Toast 音频(非必要)
  我们可以为Toast设置持续时间(仅有两个值:short和long),通常当我们的通知属于约会或者会议提醒之类的时候才使用“long”值。
  注意:Toast持续时间默认为“short”。



   1:  IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
   2:  ((XmlElement)toastNode).SetAttribute("duration", "long");
  另外我们也可以设置Toast音频,默认情况下Windows在播放通知时会播放一个简短的声音。同时我们可以选择使用系统提供的声音,也可以不使用任何声音。
  由于模板中不包含 audio 元素,因此我们必须定义该元素,同时使用“ms-winsoundevent:”前缀指定声音文件。



   1:  IXmlNode toastNode = toastXml.SelectSingleNode("/toast");                        
   2:  XmlElement audio = toastXml.CreateElement("audio");
  指定非默认声音。



   1:  audio.SetAttribute("src", "ms-winsoundevent:Notification.IM");
  定义 audio 元素之后,需要将其附加到 Toast 的 XML 负载中,作为 toast 元素的子元素。



   1:  toastNode.AppendChild(audio);
  9,指定应用的启动参数
  通常用户点击 Toast 通知时,相关应用应当会启动,并显示与该通知的内容相关的视图。
  我们可以使用 Toast 元素的 launch 属性来实现该效果。
  该属性提供一个在通过 Toast 启动应用时,从 Toast 传递到应用的字符串。此字符串没有任何特定形式,它由我们应用来定义。
  我们的应用在每次被激活时必须检查作为参数形式的此字符串,并相应地调整它的视图或操作。例如:



   1:  ((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"12345\",\"param2\":\"67890\"}");
  10,创建 Toast 通知并发送



   1:  ToastNotification toast = new ToastNotification(toastXml);
   2:  ToastNotificationManager.CreateToastNotifier().Show(toast);
  最后运行效果可如下:
DSC0007.png
  点击按钮后弹出Toast通知:
DSC0008.png
  
  更多关于Toast通知资料可参考:
  1,发送 Toast 通知(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows)
  2,Toast notifications sample

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69785-1-1.html 上篇帖子: 强制开启Windows8的分屏显示( Windows 8 Snap )功能 下篇帖子: windows 8 开发:提高App性能 概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表