Windows Phone 8仿Toast弹出通知。
Wp8后台收到消息可以弹出Toast通知,可是应用在前台跑的时候却好像没有办法弹出Toast通知。而需求上有要求要弹出Toast通知,在这种情况下,就开始考虑是否能够做一个类似Toast的弹出通知呢?
首先,要弹出通知的那部分代码是一个比较耗时的操作,开启了一个线程让它去跑,而此时,应用的页面可能导航到了其他的页面去了。所以这个通知必须要能够通知的时候,弹出在当前的页面中。App.xaml.cs里面有 public PhoneApplicationFrame RootFrame 这样一个属性,这个属性存放的是显示应用的框架。从RootFrame我们可以获取应用的当前的页面。当我们获取到页面后,从页面的虚拟化树中可以抓取到页面最外层的Grid。此时,我们将我们要弹出的弹出框插入到该Grid中,这样弹出框就弹出来了。而隐藏的时候,只要再将弹出框给Remove就OK了。
这样只是完成了弹出和消失,而Toast进来的时候是有一个从上到下进入的动画,而出去的时候,有一个从下到上消失的动画。我们还要在弹出和隐藏的时候加加一个动画上去。另外Toast过一段时间会自动消失,所以在弹出时,要添加一个计时器,定时关闭。这样一个类似Toast的通知便完成了。
关键代码
private void Insert()
{
var frame = Application.Current.RootVisual as Microsoft.Phone.Controls.PhoneApplicationFrame;
_page = frame.Content as PhoneApplicationPage;
var grid = System.Windows.Media.VisualTreeHelper.GetChild(_page, 0) as Grid;
if (grid.RowDefinitions.Count > 0)
{
Grid.SetRowSpan(this, grid.RowDefinitions.Count);
}
grid.Children.Add(this);
//添加动画
}
private void Remove()
{
var frame = Application.Current.RootVisual as Microsoft.Phone.Controls.PhoneApplicationFrame;
var page = frame.Content as PhoneApplicationPage;
var grid = System.Windows.Media.VisualTreeHelper.GetChild(page, 0) as Grid;
grid.Children.Remove(this);
//添加退出动画
}
Windows Phone 8仿Toast弹出通知。的更多相关文章
- Android PopupWindow 仿微信弹出效果
项目中,我须要PopupWindow的时候特别多,这个东西也特别的好使,所以我今天给大家写一款PopupWindow 仿微信弹出效果.这样大家直接拿到项目里就能够用了! 首先让我们先看效果: 那么我首 ...
- WindowsPhone模拟简易Toast弹出框
Coding4Fun这个开源控件中有ToastPrompt这个弹出框组件,但是由于Coding4Fun太庞大,如果只用到ToastPrompt这个控件的话,整个引用不太值当的.于是自己写了一个差不多的 ...
- 使Toast弹出不重叠的封装
一.问题 在频繁弹出toast的时候,弹出后出现延迟重叠的现象. 二.解决 Toast通常由makeTextT()方法实例化,如何不想要toast弹出时重叠,那么只需在应用中保持一个Toast对象即可 ...
- appium应用切换以及toast弹出框处理
一.应用切换 应用切换的方法很简单,直接调用driver.start_activity()方法,传入app_package和app_activity参数,示例代码如下: from appium imp ...
- 自学Android的第一个小程序(小布局、button点击事件、toast弹出)
因为上班,学习时间有限,昨晚才根据教程写了一个小程序,今天忙里偷闲写一下如何实现的,来加深一下印象. 首先创建一个Android项目, 通过activity_xxx.xml布局文件来添加组件来达到自己 ...
- Android 弹出通知Toast的使用
//官方帮助文档:http://wear.techbrood.com/guide/topics/ui/notifiers/toasts.html <LinearLayout xmlns:andr ...
- 封装一个的toast弹出框(vue项目)
逆风的方向,更适合飞翔 实现效果 实现步骤 先写出一个toast组件 // Toast.vue <template> <div id="toast" :class ...
- Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
在上一篇文章 Android简单实现BroadCastReceiver广播机制 中简单的实现了一个广播机制,这里利用BroadCarstRecevier实现一个接收短信并显示内容的案例,当然至于接收到 ...
- 解决windows系统下打开应用弹出丢失libmysql.dll的问题
只要把下载libmysql.dll,放到exe应用程序的所在目录,就可以运行,libmysql.dll有32位和64位版本,可以分别测试一下行不行,如果不行在换一个 版本试试.libmysql.dll ...
随机推荐
- Sleep v.s. sleep
Sleep函数_百度百科 http://baike.baidu.com/link?url=EmOxsG_du8HdLbv_9nDVlahpZOQ6DgkoLKooQInorAqIl_CEhCvBzTC ...
- discuz(dz) SSO(单点,同歩,异步)登录 --转
原文地址:http://fc-lamp.blog.163.com/blog/static/1745666872012762520123/ discuz(dz) SSO(单点,同歩,异步)登录 一般流 ...
- LeetCode15 3Sum
题意: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find al ...
- python 复杂表达式,以及表单的处理
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } def generate_tr(name, score): if score < 60: return '& ...
- Data Structure 之 最优二叉树
给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近. ...
- 1.4.2 solr字段类型--(1.4.2.1)字段类型定义和字段类型属性
1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...
- Android动画 interpolator的用法
1. <?xml version="1.0" encoding="utf-8"?> 2. <set 3. xmlns:Android=&quo ...
- JDBC批处理读取指定Excel中数据到Mysql关系型数据库
这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...
- 转:android surface简单使用Demo
转: http://blog.csdn.net/listening_music/article/details/6860786 通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效 ...
- 编译项目报错: Ignoring file / xxx , missing required architecture i386 in file / xxx (2 slices)
.lib 或者 .a需用于真机版本,也就是ARM7的,如果你编译的是模拟器就会出现这个错误: 选择真机调试即可 .