1. 程式人生 > >通知(Tile): application tile 基礎, secondary tile 基礎

通知(Tile): application tile 基礎, secondary tile 基礎

/*
 * 本例用於演示 secondary tile 的基礎
 * 
 * 
 * SecondaryTile - secondary tile
 *     TileId - secondary tile 的唯一標識
 *     SecondaryTile.Exists(tileId) - 指定 TileId 的 secondary tile 是否存在(靜態方法)
 *     SecondaryTile secondaryTile = new SecondaryTile(tileId)
 *         如果指定的 tileId 不存在,則建立 SecondaryTile 物件
 *         如果指定的 tileId 存在,則返回此 SecondaryTile 物件
 *     SecondaryTile secondaryTile = SecondaryTile(string tileId, string displayName, string arguments, Uri square150x150Logo, TileSize desiredSize)
 *         tileId - secondary tile 的唯一標識(指定的 tileId 不存在,則建立 SecondaryTile 物件;指定的 tileId 存在,則返回此 SecondaryTile 物件)
 *         displayName - 磁貼左下角的顯示名稱(磁貼的 ToolTip 用的也是此值)
 *         arguments - 啟動引數
 *         square150x150Logo - 中磁貼圖示
 *         desiredSize - 固定到開始螢幕時的期望的初始規格(Square150x150, Wide310x150)
 *     DisplayName - 磁貼左下角的顯示名稱(磁貼的 ToolTip 用的也是此值)
 *     Arguments - 啟動引數(通過磁貼啟動 app 時可以獲取此引數,只可以在 OnLaunched 中獲取,在 OnActivated 之類的中是獲取不到的))
 *     VisualElements - 返回一個 SecondaryTileVisualElements 物件,用於設定磁貼的部分顯示屬性
 *     RequestCreateAsync() - 請求固定此 SecondaryTile(會彈出確認框)
 *     RequestDeleteAsync() - 請求取消固定此 SecondaryTile
 *     UpdateAsync() - 更新此 SecondaryTile(這裡不是更新 Tile 通知,而只是更新 SecondaryTile 物件的相關資訊)
 *     FindAllAsync() - 獲取此 app 固定到開始螢幕的所有 SecondaryTile 集合(靜態方法)
 *     
 * SecondaryTileVisualElements - 磁貼的部分顯示屬性
 *     BackgroundColor - 背景顏色
 *     ForegroundText - 前景色類別(Dark 或 Light)
 *     Square150x150Logo - 中磁貼的圖示的地址
 *     Wide310x150Logo - 寬磁貼的圖示的地址
 *     Square310x310Logo - 大磁貼的圖示的地址
 *     ShowNameOnSquare150x150Logo - 是否在中磁貼的左下角顯示名稱
 *     ShowNameOnWide310x150Logo - 是否在寬磁貼的左下角顯示名稱
 *     ShowNameOnSquare310x310Logo - 是否在大磁貼的左下角顯示名稱
 * 
 * TileNotification - Tile 通知
 *     Content - Tile 的內容,XmlDocument 型別的資料,只讀,其需要在建構函式中指定
 *     ExpirationTime - Tile 通知的過期時間,超過這個時間就會清除這個 Tile
 *     
 * TileUpdateManager - Tile 更新管理器
 *     CreateTileUpdaterForSecondaryTile(string tileId) - 為指定的 SecondaryTile 建立一個 Tile 更新器,返回 TileUpdater 型別的資料
 *     
 * TileUpdater - 磁貼的 Tile 更新器
 *     Update(TileNotification notification) - 將指定的 TileNotification 物件更新到指定的 secondary tile
 *     Clear() - 清除 secondary tile 的資料
 *     EnableNotificationQueue(bool enable) - 是否啟用 tile 的佇列功能(即 tile 迴圈顯示),佇列最多可容納 5 個 tile
 *     EnableNotificationQueueForSquare150x150(bool enable) - 是否啟用中磁貼的 tile 佇列功能
 *     EnableNotificationQueueForWide310x150(bool enable) - 是否啟用寬磁貼的 tile 佇列功能
 *     EnableNotificationQueueForSquare310x310(bool enable) - 是否啟用大磁貼的 tile 佇列功能
 *     Setting - 獲取通知設定(NotificationSetting 列舉)
 *         Enabled - 通知可被顯示
 *         DisabledForApplication, DisabledForUser, DisabledByGroupPolicy, DisabledByManifest - 因相應的原因通知被禁止顯示
 * 
 * 
 * 注:
 * 1、磁貼規格分為小,中,寬,大
 * 2、小規格的磁貼無法在其左下角顯示名稱,但是可以顯示 tile 通知(但是不支援 tile 通知的佇列功能)
 * 3、對於 secondary tile 來說,每個磁貼都可以為其設定一個啟動引數,此啟動引數與磁貼當前顯示的是什麼通知無關,其只與磁貼有關
 * 4、單擊 secondary tile 啟動 app 時,可以在 App.xaml.cs 中通過如下方式獲取啟動引數(本例的相關程式碼在 /UI/MySplashScreen.xaml.cs 中)
 * protected async override void OnLaunched(LaunchActivatedEventArgs args)
 * {
 *     string arguments = args.Arguments;
 * }
 * 
 * 
 * 注:本例是通過 xml 來構造 tile 的,另外也可以通過 NuGet 的 Microsoft.Toolkit.Uwp.Notifications 來構造 tile(其用 c# 對 xml 做了封裝)
 
*/ using System; using System.Collections.Generic; using Windows.Data.Xml.Dom; using Windows.UI; using Windows.UI.Notifications; using Windows.UI.StartScreen; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace Windows10.Notification.Tile { public sealed partial class SecondaryTileBasic : Page {
private Random _random = new Random(); public SecondaryTileBasic() { this.InitializeComponent(); } // 固定一個新的 SecondaryTile(可以固定多個) private async void btnPinSecondaryTile_Click(object sender, RoutedEventArgs e) { Uri square150x150Logo
= new Uri("ms-appx:///Assets/Square150x150Logo.png"); Uri wide310x150Logo = new Uri("ms-appx:///Assets/Wide310x150Logo.png"); Uri square310x310Logo = new Uri("ms-appx:///Assets/Square310x310Logo.png"); string tileId = _random.Next(100000, 1000000).ToString(); /* if (SecondaryTile.Exists(tileId)) // 指定 tileId 的 secondary tile 是否存在 { SecondaryTile secondaryTile = new SecondaryTile(tileId); // 通過 tileId 獲取指定的 SecondaryTile 物件 } */ // 建立一個 SecondaryTile 物件 SecondaryTile secondaryTile = new SecondaryTile ( tileId, "DisplayName", $"Arguments(TileId: {tileId}){DateTime.Now.ToString("HH:mm:ss")}", // 不能設定為空,否則會報錯 square150x150Logo, TileSize.Wide310x150 // 我這裡測試,只能設定為 Square150x150 或 Wide310x150 ); secondaryTile.VisualElements.Wide310x150Logo = wide310x150Logo; secondaryTile.VisualElements.Square310x310Logo = square310x310Logo; secondaryTile.VisualElements.ShowNameOnSquare150x150Logo = true; secondaryTile.VisualElements.ShowNameOnWide310x150Logo = true; secondaryTile.VisualElements.ShowNameOnSquare310x310Logo = true; secondaryTile.VisualElements.BackgroundColor = Colors.Orange; secondaryTile.VisualElements.ForegroundText = ForegroundText.Light; try { bool isPinned = await secondaryTile.RequestCreateAsync(); lblMsg.Text = isPinned ? "固定成功" : "固定失敗"; } catch (Exception ex) { lblMsg.Text = "固定失敗: " + ex.ToString(); } } // 更新所有的 SecondaryTile 通知 private async void btnUpdateSecondaryTile_Click(object sender, RoutedEventArgs e) { IReadOnlyList<SecondaryTile> secondaryTileList = await SecondaryTile.FindAllAsync(); foreach (var secondaryTile in secondaryTileList) { // 用於描述 tile 通知的 xml 字串 string tileXml = $@" <tile> <visual> <binding template='TileSmall'> <text>Small(小){DateTime.Now.ToString("HH:mm:ss")}</text> </binding> <binding template='TileMedium'> <text>Medium(中){DateTime.Now.ToString("HH:mm:ss")}</text> </binding> <binding template='TileWide'> <text>Wide(寬){DateTime.Now.ToString("HH:mm:ss")}</text> </binding> <binding template='TileLarge'> <text>Large(大){DateTime.Now.ToString("HH:mm:ss")}</text> </binding> </visual> </tile>"; // 將 xml 字串轉換為 Windows.Data.Xml.Dom.XmlDocument 物件 XmlDocument tileDoc = new XmlDocument(); tileDoc.LoadXml(tileXml); // 獲取此 tile 的 xml // lblMsg.Text = tileDoc.GetXml(); // 例項化 TileNotification 物件 TileNotification tileNotification = new TileNotification(tileDoc); DateTimeOffset expirationTime = DateTimeOffset.UtcNow.AddSeconds(30); tileNotification.ExpirationTime = expirationTime; // 30 秒後清除這個 tile // 將指定的 TileNotification 物件更新到 secondary tile TileUpdater tileUpdater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(secondaryTile.TileId); tileUpdater.EnableNotificationQueue(true); // 啟用 tile 的佇列功能(最多可容納 5 個 tile) tileUpdater.Update(tileNotification); // 更新此 SecondaryTile 物件的相關資訊 secondaryTile.Arguments = $"Arguments(TileId: {secondaryTile.TileId}){DateTime.Now.ToString("HH:mm:ss")}"; bool success = await secondaryTile.UpdateAsync(); } } // 取消固定所有的 SecondaryTile private async void btnUnpinSecondaryTile_Click(object sender, RoutedEventArgs e) { IReadOnlyList<SecondaryTile> secondaryTileList = await SecondaryTile.FindAllAsync(); foreach (SecondaryTile secondaryTile in secondaryTileList) { try { bool isUnpinned = await secondaryTile.RequestDeleteAsync(); lblMsg.Text = isUnpinned ? "取消固定成功" : "取消固定失敗"; } catch (Exception ex) { lblMsg.Text = "取消固定失敗: " + ex.ToString(); } } } } }

相關推薦

通知Tile: application tile 基礎, secondary tile 基礎

/* * 本例用於演示 secondary tile 的基礎 * * * SecondaryTile - secondary tile * TileId - secondary tile 的唯一標識 * SecondaryTile.Exists(tileId)

背水一戰 Windows 10 (110) - 通知Tile: secondary tile 模板之基礎, secondary tile 模板之文本

play req pro lock 方式 居中 文本樣式 splay spin [源碼下載] 背水一戰 Windows 10 (110) - 通知(Tile): secondary tile 模板之基礎, secondary tile 模板之文本 作者:webabcd介

android 元件化架構讀書筆記 Application基礎和作用

當app啟動時最先啟動的是Application,每個APP執行時僅建立唯一一個Application,用於儲存系統的一些資訊。Application中比較重要的方法:1.onCreate:在建立應用程式時回撥的方法2.onTerminate:當終止應用程式物件時呼叫,不保證

AOP基礎:繼承接口方式實現:前置通知、後置通知、異常通知、環繞通知 demo

widget pointcut 1.0 add contex 分享圖片 lns stat ado 運行環境:     ide: Spring Tool Suite 3 Version: 3.9.8.RELEASE     jdk:   1.8     系統:  

通知Notification

defaults img ges oca data- 發送通知 ext image style 通知(Notification)1、通知的基本用法 //創建 NotificationManager 實例 NotificationManager manager

Spring的通知Advice

obj throws npoi nts src pan joinpoint title 執行  Spring提供了5種Advice類型:   Interception Around:JointPoint前後調用   Before:JointPoint前調用   After

6第1部分:C++基礎的尾巴~

區別 nbsp 自己 字符串處理函數 處理 com bsp 操作 串處理 這篇文章有問題!!!待改 2.6.3編寫自己的頭文件P67中提到:“庫類型string在名為string的頭文件中定義。又如,我們應該把Sales_data類定義在名為Sales_data.h的頭

屬性更改通知INotifyPropertyChanged——針對ObservableCollection

notify upd ev3 bsp blank rop ref ring handle 問題 在開發webform中,wpf中的ObservableCollection<T>,MSDN中說,在添加項,移除項時此集合通知控件,我們知道對一個集合的操作是CURD但

《Linux高性能服務器編程》學習總結——Linux網絡編程基礎API

讀數 p s file src prot 非線程安全 設立 無法 set 第五章 Linux網絡編程基礎API   對於網絡編程,首先要了解的就是字節序的問題,字節序分為主機字節序和網絡字節序,主機字節序又稱小端字節序,是低字節存放在地地址,而網絡字節序又稱大端字

SQL語句學習----通用語法,DDL,DML基礎語句

生效 mod 當前 輸入 ddl 窗口 str integer structure 1.1 SQL概述 1.1.1 SQL語句介紹   結構化查詢語言(Structured Query Language)簡稱SQL,是關系型數據庫管理系統都需要遵循的規範。不

PHP面試:程序設計、框架基礎知識、算法與數據結構、高並發解決方案類

表設計 工作原理 結構 單一入口 php 能力 高並發解決方案 數據表 缺點 一、程序設計 1、設計功能系統——數據表設計、數據表創建語句、連接數據庫的方式、編碼能力 二、框架基礎知識 1、MVC框架基本原理——原理、常見框架、單一入口的工作原理、模板引擎的理解 2、常見框

十、無事勿擾,有事通知1——NSNotification

over ring pass tro 管理中心 代碼 aps pre 發生 概述 很久很久以前,有一只菜鳥正在美滋滋的擼著他的嵌入式C代碼。然而有一天,老板對菜鳥說:“別擼C了,從現在開始你就寫swift開發ios了。”菜鳥一臉懵逼,但還是照做了。 又有一天,菜蛋諂媚的對菜

celery application

操作 配置 空間 安全 import object 定義 延遲 fun Application application celery在使用之前,必須首先實例化。e.g. app = Celery() app 是線程安全的,即:不同配置、組件和任務的多個app可以共存在同一

程式設計師面試寶典隨筆記---執行緒和程序1,-基礎資訊

①程式,程序,執行緒的區別 程式:程式是由一系列的指令和邏輯組成的一個靜態檔案(如cpp檔案),無論能不能執行,它都客觀的存在於儲存器中。 程序:程序是計算機中的程式關於某資料集合

Android安卓狀態列訊息推送通知Notification

我從不猜測,猜測是一個很壞的習慣——會影響正常的邏輯推理能力。              ——阿瑟·柯南·道爾 《福爾摩斯探案集》 近日,在做安卓專案開發的時候涉及到狀態列通知的需求,查了資料,總結一個簡

Golang 入門基礎教程Linux 平臺下安裝Golang基礎環境

Linux平臺下安裝Golang的話可以直接下載官方原始碼包, 注意:如果系統內安裝過其他版本的Golang原始碼包,必須先將之前的清除掉 1、解壓原始碼包 解壓原始碼包到 /usr/local目錄下 > sudo tar -C /usr/local

android使用通知notification

通知可以在活動中建立也可以廣播中建立,也可以在服務中建立。 其實通知只有一般是在我們的應用在後臺的時候才能使用到,所以,一般不再活動中建立。 但不困在哪裡建立大體的步驟都是差不多的。 具體的思路是: 第一我們要有一個通知的管理者,即我們的NotificationManager

岡薩雷斯:數字影象處理:第二章數字圖形基礎——數學工具

陣列操作與矩陣操作的區別: 也就是說,除非特別說明,否則以後所提到的矩陣之間的操作都是元畫素與對應畫素之間的操作。 線性運算與非線性運算(和純數學裡面的定義相同): 例如,求和是線性運算,取最大值是非線性運算 灰度影象的集合與邏輯運算: 在灰度影象領域,集合的

岡薩雷斯:數字影象處理:第二章數字圖形基礎——影象內插,相鄰畫素,鄰接性,距離度量

1.影象內插:從根本上看,內插是用已知資料來估計未知位置的數值的處理。 例如,假設一幅大小為500500畫素的影象要放大1.5倍到75075畫素,一種簡單的放大方法是建立一個假想的750750網格,它與原始影象有相同的間隔,然後將其收縮,使它準確的與原影象匹配。顯然,收縮後的750750網格

swift ReactiveSwift框架下通知NotificationCenter的使用

註冊: NotificationCenter.default.post(name: Notification.Name(rawValue: "NotificationName"), object: object) 實現: NotificationCenter.default.reac