重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性
作者:webabcd
介绍
重新想象 Windows 8.1 Store Apps 之通知的新特性
- 警报通知(闹钟)
- Tile 的新特性
示例
1、演示 win8.1 中新增的警报 toast(闹钟)
AlarmToast.xaml
<Page
x:Class="Windows81.Notification.AlarmToast"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows81.Notification"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="120 0 0 0"> <TextBlock Name="lblMsg" FontSize="14.667" Margin="0 10 0 0" /> </StackPanel>
</Grid>
</Page>
AlarmToast.xaml.cs
/*
* 演示 win8.1 中新增的警报 toast(闹钟)
*
* 关于 toast 的基础请参见:http://www.cnblogs.com/webabcd/archive/2013/06/20/3145356.html
*
*
* 注:
* 1、需要在 manifest 中设置支持 toast 通知和锁屏通知
* 2、需要在 manifest 中的 Application/Extensions 内做如下设置
* <!--声明此 app 是一个“闹钟”应用,其会出现在“设置”->“电脑和设备”->“锁屏应用”->“选择要显示提醒的应用”列表中-->
<m2:Extension Category="windows.alarm" />
<!--为了演示 Notification/AlarmToast 需要如下设置一个后台任务-->
<Extension Category="windows.backgroundTasks" EntryPoint="SampleForAlarmToast">
<BackgroundTasks>
<Task Type="audio" />
<Task Type="timer" />
</BackgroundTasks>
</Extension>
* 3、系统静音也能播放声音
* 4、不受免打扰时间的限制
*/ using System;
using Windows.ApplicationModel.Background;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation; namespace Windows81.Notification
{
public sealed partial class AlarmToast : Page
{
public AlarmToast()
{
this.InitializeComponent(); this.Loaded += AlarmToast_Loaded;
} protected async override void OnNavigatedTo(NavigationEventArgs e)
{
try
{
// 向系统请求成为闹钟应用的权限,会弹出确认对话框
await AlarmApplicationManager.RequestAccessAsync().AsTask(); // 获取当前应用程序的成为闹钟应用的权限(AlarmAccessStatus 枚举)
// Unspecified - 用户未响应应用程序设置警报的权限请求
// AllowedWithWakeupCapability - 用户已经为应用程序授予设置警报的权限,并且警报可以将计算机从待机状态唤醒
// AllowedWithoutWakeupCapability - 用户已经为应用程序授予设置警报的权限,但是警报无法将计算机从待机状态唤醒
// Denied - 用户已拒绝该应用程序设置警报的权限
AlarmAccessStatus alarmAccessStatus = AlarmApplicationManager.GetAccessStatus();
lblMsg.Text = alarmAccessStatus.ToString();
}
catch (Exception ex)
{
lblMsg.Text = ex.ToString();
}
} void AlarmToast_Loaded(object sender, RoutedEventArgs e)
{
// 关于 toast 通知详见:http://www.cnblogs.com/webabcd/archive/2013/06/20/3145356.html
string toastXmlString =
"<toast duration=\"long\">\n" +
"<visual>\n" +
"<binding template=\"ToastText02\">\n" +
"<text id=\"1\">text1</text>\n" +
"<text id=\"2\">text2</text>\n" +
"</binding>\n" +
"</visual>\n" +
"<commands scenario=\"alarm\">\n" + // 除了 alarm 还有 incomingCall
"<command id=\"snooze\"/>\n" + // snooze 代表在闹钟 toast 中显示“暂停”按钮(小睡一会)
"<command id=\"dismiss\"/>\n" + // dismiss 代表在闹钟 toast 中显示“取消”按钮
"</commands>\n" +
// 闹钟铃声: Notification.Default, Notification.IM, Notification.Mail, Notification.Reminder, Notification.SMS, Notification.Looping.Alarm, Notification.Looping.Alarm2, Notification.Looping.Alarm3, Notification.Looping.Alarm4, Notification.Looping.Alarm5, Notification.Looping.Alarm6, Notification.Looping.Alarm7, Notification.Looping.Alarm8, Notification.Looping.Alarm9, Notification.Looping.Alarm10, Notification.Looping.Call, Notification.Looping.Call2, Notification.Looping.Call3, Notification.Looping.Call4, Notification.Looping.Call5, Notification.Looping.Call6, Notification.Looping.Call7, Notification.Looping.Call8, Notification.Looping.Call9, Notification.Looping.Call10
"<audio src=\"Notification.Looping.Alarm2\" loop=\"true\" />\n" +
"</toast>\n"; var toastDOM = new Windows.Data.Xml.Dom.XmlDocument();
toastDOM.LoadXml(toastXmlString); var toastNotifier = Windows.UI.Notifications.ToastNotificationManager.CreateToastNotifier();
// 闹钟 toast 提示出现后,如果点击“暂停”(snooze)按钮,则第 3 个参数指定的时间过后继续弹出闹钟 toast,本例是 120 秒
var customAlarmScheduledToast = new Windows.UI.Notifications.ScheduledToastNotification(toastDOM, DateTime.Now.AddSeconds(), TimeSpan.FromSeconds(), );
toastNotifier.AddToSchedule(customAlarmScheduledToast);
}
}
}
2、win8.1 中的 tile 模板增加到 75 个
Tile.xaml
<Page
x:Class="Windows81.Notification.Tile"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows81.Notification"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<Grid.Resources>
<Style x:Key="ItemTitleStyle" TargetType="TextBlock">
<Setter Property="FontSize" Value="14.667"/>
</Style> <ItemsPanelTemplate x:Key="StoreFrontGridItemsPanelTemplate">
<WrapGrid MaximumRowsOrColumns="3" VerticalChildrenAlignment="Top" HorizontalChildrenAlignment="Left"/>
</ItemsPanelTemplate> <Style x:Key="StoreFrontTileStyle" TargetType="GridViewItem">
<Setter Property="FontFamily" Value="Segoe UI" />
<Setter Property="Height" Value="310" />
<Setter Property="Width" Value="310" />
<Setter Property="Padding" Value="0" />
<Setter Property="Margin" Value="5" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="TabNavigation" Value="Local" />
</Style> <DataTemplate x:Key="StoreFrontTileTemplate">
<Grid HorizontalAlignment="Left" Background="Transparent">
<StackPanel Orientation="Vertical">
<TextBlock TextWrapping="Wrap" VerticalAlignment="Center" Text="{Binding FileName}" HorizontalAlignment="Left" />
<Image Source="{Binding Path}" Stretch="None" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0,10,0,0"/>
</StackPanel>
</Grid>
</DataTemplate>
</Grid.Resources> <!--显示 75 种不同的 Tile 模板-->
<GridView x:Name="gridView" Margin="120 0 0 0"
ItemTemplate="{StaticResource StoreFrontTileTemplate}"
ItemContainerStyle="{StaticResource StoreFrontTileStyle}"
ItemsPanel="{StaticResource StoreFrontGridItemsPanelTemplate}"
BorderBrush="LightGray" VerticalAlignment="Top"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
SelectionMode="None" />
</Grid>
</Page>
Tile.xaml.cs
/*
* win8.1 中的 tile 模板增加到 75 个
*
*
* 关于 tile 的基础请参见:http://www.cnblogs.com/webabcd/archive/2013/06/24/3151864.html
*
*
* win 8.1 中 tile 的新特性如下:
* 1、tile 分 4 种:小 = Square70x70, 中等 = Square150x150, 长方形 = Wide310x150, 大 = Square310x310
* 2、可以在 manifest 中指定 app 安装后默认的 tile 类型
* 3、使用 tile 模板时,其命名规则也变了,参见 NotificationsExtensions 项目(比如 win8 中的 TileSquareImage 在 win8.1 中变为了 TileSquare150x150Image)
* 4、tile 基础(通过 NotificationsExtensions 创建)参见:http://www.cnblogs.com/webabcd/archive/2013/06/24/3151864.html
* 5、tile 基础(通过手工构造 xml)参见:http://www.cnblogs.com/webabcd/archive/2013/06/17/3139740.html
* 6、如果想要支持 Square310x310,则必须要支持 Wide310x150
* 7、建议为缩放比例 0.8x、1x、1.4x 和 1.8x 提供相对应的资源,以达到更好的显示效果
* 8、tile 的通知队列,除了 TileUpdater.EnableNotificationQueue() 外还支持只在指定大小的 tile 上启用 tile 队列:TileUpdater.EnableNotificationQueueForSquare150x150(), TileUpdater.EnableNotificationQueueForSquare310x310(), TileUpdater.EnableNotificationQueueForWide310x150()
* 9、新增 SecondaryTile.PhoneticName,可以指定 SecondaryTile 的名字的拼音,系统将据此排序 UI
* 10、为了同时支持 win8 和 win8.1 新增了 fallback 属性,类似如下使用(找不到 TileSquare150x150Image 的话则用 TileSquareImage,找不到 TileWide310x150Image 的话则用 TileWideImage)
<tile>
<visual version="2">
<binding template="TileSquare150x150Image" fallback="TileSquareImage" branding="None">
<image id="1" src="Assets/Images/w6.png"/>
</binding>
<binding template="TileWide310x150Image" fallback="TileWideImage" branding="None">
<image id="1" src="Assets/Images/sq5.png"/>
</binding>
<binding template="TileSquare310x310Image" branding="None">
<image id="1" src="Assets/Images/sq6.png"/>
</binding>
</visual>
</tile>
*/ using System;
using System.Linq;
using Windows.ApplicationModel;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation; namespace Windows81.Notification
{
public sealed partial class Tile : Page
{
public Tile()
{
this.InitializeComponent();
} protected async override void OnNavigatedTo(NavigationEventArgs e)
{
// Windows81/Notification/tiles 文件夹内 75 张图片分别用于演示 Tile 的 75 种模板 var folder = await Package.Current.InstalledLocation.GetFolderAsync(@"Notification\tiles");
var files = await folder.GetFilesAsync(); var dataSource = from p in files
select new
{
FileName = p.DisplayName,
Path = "ms-appx:///Notification/tiles/" + p.Name
}; gridView.ItemsSource = dataSource;
}
}
}
OK
[源码下载]
重新想象 Windows 8.1 Store Apps (85) - 警报通知(闹钟), Tile 的新特性的更多相关文章
- 重新想象 Windows 8.1 Store Apps 系列文章索引
[源码下载] [重新想象 Windows 8 Store Apps 系列文章] 重新想象 Windows 8.1 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
[源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...
- 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar
[源码下载] 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker
[源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...
- 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout
[源码下载] 重新想象 Windows 8.1 Store Apps (74) - 新增控件: Flyout, MenuFlyout, SettingsFlyout 作者:webabcd 介绍重新想象 ...
- 重新想象 Windows 8.1 Store Apps (75) - 新增控件: Hub, Hyperlink
[源码下载] 重新想象 Windows 8.1 Store Apps (75) - 新增控件: Hub, Hyperlink 作者:webabcd 介绍重新想象 Windows 8.1 Store A ...
- 重新想象 Windows 8.1 Store Apps (76) - 新增控件: SearchBox
[源码下载] 重新想象 Windows 8.1 Store Apps (76) - 新增控件: SearchBox 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之 ...
- 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性
[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...
- 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup
[源码下载] 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup 作者:webabcd 介绍重新想象 Wind ...
随机推荐
- Asp.net Core中使用NLog,并封装成公共的日志方法
1.安装NLog "NLog.Extensions.Logging": "1.0.0-rtm-alpha4" 2.配置NLog public void Conf ...
- LESS详解之函数(四)
之前已经为大家介绍了一些LESS函数,大家应该对之前介绍的有所了解了.下面依旧为大家介绍LESS的函数,附加着一些小例子.希望这些有关LESS的函数能在大家编写LESS的时候有所帮助. saturat ...
- 在 远程桌面 权限不足无法控制 UAC 提示时,可使用 计划任务 绕开系统的 UAC 提示
就是记录一下,在远程的时候,很可能远程软件没有以管理员身份运行,或者其它原因,操作会被系统阻止,UAC 会进行提示,但是远程软件目前是无法操作的.(以下方法在 Windows 7 中测试通过) 可以通 ...
- saiku之行速度优化(三)
经历了前两轮优化之后,saiku由不可使用,优化到可以使用,不过在分析大量日志数据的时候,还有顿卡的感觉!继续观察背后执行的Sql,决定将注意力关注到索引上面! 日志的主要使用场景是:固定日期维度的数 ...
- cocos2dx在ubuntu下配置声音引擎
声音引擎库和cocos2dx的库是分开的我们要使用的时候不得不重新修改一下makefile,首先我们要找到声音引擎库的位置,在cocos2dx的 根目录下有一个lib文件,看一下是否存在libcoco ...
- 配置NAT回流导致外网解析到了内网IP
单位有3个域名,用量很大,2014年开始本人研究部署了Bind+DLZ +Mysql的三机智能多链路DNS,非常好用,优点是: 1.使用Mysql管理记录,配置.管理.查询方便. 2.自动判断运营商, ...
- nodejs初窥
1. node.js不是js应用,而是js运行平台.Node.js采用C++编写,是一个js的运行环境. 2. node.js采用事件驱动.异步编程,为网络服务而设计.Node.js的网络应用模块包括 ...
- Qt Style Sheets Examples——定制前景色和背景色
例子取自:http://qt-project.org/doc/qt-4.8/stylesheet-examples.html 以lineEdit为例 (1)设置某个lineEdit的背景色为黄色 li ...
- 《Programming with Objective-C》第八章 Working with Blocks
Blocks are Objective-C objects, which means they can be added to collections like NSArray or NSDicti ...
- zoj 3261 Connections in Galaxy War
点击打开链接zoj 3261 思路: 带权并查集 分析: 1 题目说的是有n个星球0~n-1,每个星球都有一个战斗值.n个星球之间有一些联系,并且n个星球之间会有互相伤害 2 根本没有思路的题,看了网 ...