windowsphone8.1学习笔记之磁贴

磁贴,wp系统独有。个人觉得还是蛮给力的。

好了废话不多说,我们来创建自己的辅助磁贴。创建磁贴是通过SecondaryTile对象来的,所以先说说该对象的一些重要属性。

Arguments属性:传值用的,就是将磁贴的相关参数传递给应用,从而让应用识别是哪个磁贴点击进入的。

BackgroupColor属性,这个属性看名字应该都很熟悉了,是磁贴的背景色。

DisplayName属性:磁贴左下角的文字信息。

VisualElements属性:设置磁贴的可视化属性的显示情况。

TileId属性:表示磁贴的唯一标识,可以通过这个TileId来判断磁贴是否存在和获取磁贴对象。

SamlLogo、Logo和WideLogo属性:它们分别表示小、中、宽三种磁贴对应的图片地址

Uri square71x71Logo = new Uri("ms-appx:///Assets/Square71x71Logo.scale-240.png");
Uri square150x150Logo = new Uri("ms-appx:///Assets/Logo.scale-240.png");
Uri wide310x150Logo = new Uri("ms-appx:///Assets/WideLogo.scale-240.png");
string tileId = "App1";
string tileArguments = "tileId" + " WasPinnedAt=" + DateTime.Now.ToLocalTime().ToString();
SecondaryTile secondaryTile = new SecondaryTile(tileId, "TitleTest", tileArguments, square150x150Logo, TileSize.Square150x150);
secondaryTile.VisualElements.Wide310x150Logo = wide310x150Logo;
secondaryTile.VisualElements.Square150x150Logo = square150x150Logo;
secondaryTile.VisualElements.Square71x71Logo = square71x71Logo;

secondaryTile.VisualElements.ShowNameOnSquare150x150Logo = true;
secondaryTile.VisualElements.ShowNameOnWide310x150Logo = true;

bool isPinned = await secondaryTile.RequestCreateAsync();

提醒一下

磁贴的其他操作:

//第一种
if(SecondaryTile.Exists(tileId))
{
    //存在该tileId的磁贴,就可以通过tileId来创建磁贴    SecondaryTile secondaryTile = new SecondaryTile(tileId)   //删除磁贴   bool isDelete = await secondaryTile.RequestDeleteAsync();   //更新磁贴   secondaryTile.DisplayName="Update Tile";   bool success = await secondaryTile.UpdateAsync();
}

//第二种
IReadOnlyList<SecondaryTile> tileList = await SecondaryTile.FindAllAsync();
foreach(var tile in tileList)
{
    ......
}

以上都是废话,我们来看看辅助磁贴的实际应用,举个简单例子(自己的理解,不对请留言),wp版的搜狐新闻,我们随意点一个自己订阅的频道,可以看到如图红箭头所示的按钮,

点击即可在‘开始’屏幕生成如下图所示的辅助磁贴,这时你点击该磁贴,你就会直接进入搜狐视频的热播页,当然你能直接进入热播页是因为SecondaryTile的Arguments的值起了至关重要的作用

如下:

<Grid>
    <Button Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Center" Content="创建一个磁贴" />
    <TextBox Name="TestBox" TextWrapping="Wrap" />
</Grid>

//创建磁贴时设置SecondaryTile的Arguments的值string tileArguments = "进入视频热播页面";SecondaryTile secondaryTile = new SecondaryTile(tileId, "Test", tileArguments, square150x150Logo, TileSize.Square150x150);

protected override void OnNavigatedTo(NavigationEventArgs e){  TestBox.Text = e.Parameter.ToString();}

点击创建磁贴后,退出程序,再点击磁贴,运行效果如下

好了辅助磁贴就简单说到这儿。

我们再来说说动态磁贴,即磁贴通知。上篇我们提到了Toast通知,简单说下它和磁贴通知。

磁贴通知只能在磁贴上显示而且必须有磁贴,没有声音或者振动,但可以设置其显示的时间。Toast通知的显示只有几秒钟,是弹出式的提醒。创建方式和步骤两者相似,就不再详述。

创建磁贴通知步骤:

1、获取此贴通知模板

2、添加内容

3、创建磁贴通知对象

4、更新磁贴通知

XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150PeekImageAndText02);
XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
tileTextAttributes[0].InnerText = "waha";
tileTextAttributes[1].InnerText = "测试磁贴";
XmlNodeList tileIamgeAttributes = tileXml.GetElementsByTagName("image");
((XmlElement)tileIamgeAttributes[0]).SetAttribute("src", "ms-appx:///Assets/Logo.scale-240.png");
TileNotification tileNotification = new TileNotification(tileXml);
tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddDays(1);
TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);

CreateTileUpdaterForApplication方法重载如下,参数为tileId时,可以更新指定的辅助磁贴。

好了,关于磁贴就说这么多,吃饭去!

时间: 2025-01-03 11:58:27

windowsphone8.1学习笔记之磁贴的相关文章

windowsphone8.1学习笔记之Toast通知

熟悉或者了解wp系统的人都知道wp的Toast,Toast(吐司)通知是在屏幕最顶上弹出来的提示框,它专为与锁屏提醒.磁贴通知和应用中UI结合使用而设计,但它不是MessageDialog.说简单点它可以在打开应用的时候弹出也可以在应用关闭的时候弹出,不是重要的信息别用Toast. 要使用Toast,必须先在Package.appxmanifest中进行设置 然后如下,将“支持Toast通知”设为“是”,如果你用的是英文版的vs,“Application”-->"Notifications

windowsphone8.1学习笔记之应用数据(三)

之前说了如何操作文本文件,如果是图片文件或者其他的二进制文件则需要操作文件的Stream或者Buffer数据.就需要用到DataReader和DataWriter这两个类了,这个的好好的练一下,以后的Socket编程等也是用到这个. 做过Socket实际编程工作的都知道,得对消息进行简单的封装,比如现在要向客户端传人和动物过去,如果我们直接传一个流过去,客户端根本不知道该解析成人还是动物,所以一般会把头相关(长度,名称等)也传过去.废话不多说赶紧把自己学的那点知识记下来. //Buffer写入操

windowsphone8.1学习笔记之应用数据(一)

数据存储分为两种:云存储和应用数据(即本地存储),wp中的应用数据分为两种,一种是应用设置:一种是应用文件.wp的数据相关都是通过ApplicationData来实现,一个程序只有数据存储区. 先说应用设置,分为本地和漫游两种,分别通过ApplciationData.Currt.LocalSetting和ApplciationData.Currt.RoamingSetting来获取,都返回一个ApplicationDataContainer对象.本地和漫游的两种操作也都一样,所以这里已本地为例.

windowsphone8.1学习笔记之位图编程

说位图,先把image控件简单过下,Image的Source设置 <Image Name="img" Source="可以是网络图片的Uri.应用文件的Uri或者安装包文件的Uri" /> img.Source = new BitmapIamge(new Uri(同上)); Image的Stretch属性指定图像如何填充,枚举定义: None,图像不拉伸,一合适尺寸显示: Uniform,保留图像的纵横比,按控件的大小输出图像: UnifToFill,已

windowsphone8.1学习笔记之应用数据(二)

上一篇说了应用数据的应用设置,这篇说说应用文件,应用文件主要分为三种:本地应用文件.漫游应用文件和临时应用文件. 获取根目录方法如下,都是返回一个StorageFolder对象(稍后介绍这个). //获取本地应用文件 ApplicationData.Current.LocalFolder; //获取漫游应用文件 ApplicationData.Current.RoamingFolder //获取临时应用文件 ApplicationData.Current.TemporaryFolder; 这里细

Android自定义View学习笔记04

Android自定义View学习笔记04 好长时间没有写相关的博客了,前几周在帮学姐做毕设,所以博客方面有些耽误.过程中写了一个类似wp的磁贴的view,想再写个配套的layout,所以昨天看了一下自定义viewGroup的相关知识-晚上睡觉想了一下可行性不是很高-代码量还不如直接自己在xml上写来得快,速度上也是个问题.今天看了一下张鸿洋老师的Android 自定义View (三) 圆环交替 等待效果这篇博文,再加上前一段时间看到的一幅图,结合之前写的一个圆形imageView的实现博文And

Windows phone 8 学习笔记(5) 图块与通知(转)

基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们可以通过在接受到消息时动态更新图块来达到适时的效果.我们本节把图块和通知放在一起讲. 快速导航:一.图块二.图块更新计划三.本地通知四.推送通知 一.图块 1)定义默认图块 默认图块只能在清单文件中定义它,并且选定的图块模板后就不能再改变,除非重新发布应用,但是我们可以更新同类型的模板.应用安装后默

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu