SplashScreenSource的妙用
默认初始屏幕体验
在托管 API 下为 Silverlight 定义的默认体验是:超出某一时间阈值(约为 0.5 秒)的任何加载都将在内容区域中显示基于 XAML 的动画。显示该默认动画和初始化序列的 XAML 被硬编码到 Silverlight 插件中。
为了替换默认初始屏幕,您为在 HTML 中定义 object 元素的 Silverlight 插件的 splashScreenSource 参数提供一个值。或者,用于 Silverlight 的 ASP.NET 控件将定义一些 API,这些 API 将所需的初始屏幕相关参数设置到其在 HTML 中的输出 object 元素中。
以上是其的官方解释,简单的说呢就是可以利用初始屏幕来制作自定义的loading效果。
官方的中文文档写的相当详细了,这里我就不在做重复的熬述。
http://msdn.microsoft.com/zh-cn/library/cc838130%28VS.95%29.aspx
做法
1.先自己做一个想要的初始屏幕的xaml(在blend中创建一个silverlight 1的项目,用blend画一个loading界面)
<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="parentCanvas"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Width="280" Height="37.807">
<Canvas Width="280" Height="37.807">
<TextBlock FontSize="22" Foreground="#FF949494" TextWrapping="Wrap">
<Run Text="SilverAlbum"/>
</TextBlock>
<TextBlock x:Name="StatusText"
FontSize="10"
Foreground="#FF949494"
TextWrapping="Wrap"
Canvas.Left="150" Text=""
Canvas.Top="13.16"/>
<Canvas Canvas.Top="25.807" Width="280" Height="12">
<Rectangle Stroke="#FF949494" StrokeThickness="2" Width="280" Height="12"/>
<Rectangle x:Name="ProgressBar"
Width="272"
Height="4"
Fill="#FF949494" Canvas.Left="4.26" Canvas.Top="4">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="ProgressBarTransform" ScaleY="1" ScaleX="0"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform Y="0" X="0"/>
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
</Canvas>
</Canvas>
</Grid>
</Grid>
</Canvas>
2.在html页面中silverlightHost的地方修改以下代码
3.编写js文件(做过silverlight1.0开发的朋友应该不会陌生,就是通过js来控制silverlight中的元素)
function onSourceDownloadProgressChanged(sender, eventArgs) {
sender.findName("LayoutRoot").Width = document.body.clientWidth;
sender.findName("LayoutRoot").Height =document.body.clientHeight;
sender.findName("StatusText").Text = Math.round((eventArgs.progress * 1000)) / 10 + " percent loaded";
sender.findName("ProgressBarTransform").ScaleX = eventArgs.progress;
}
这样就完成了一个自定义的loading效果。 :) 很简单吧
看到这里再请看看不用SplashScreenSource的做法
http://www.cnblogs.com/nasa/archive/2008/07/22/1248973.html
对比下 ;) 哪种更见当方便? 效果预览:http://grmcac.com/silverlight/lab/silveralbum/
- 13(02)总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Mybatis-Generator生成Mapper文件中<if test="criteria.valid">的问题解答
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
- 负margin的原理以及应用
- 关于exp/imp的总结学习(r4笔记第26天)
- 除了写烂的手写数据分类,你会不会做自定义图像数据集的识别?!
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
- 绝对定位下的盒模型
- 运行shell脚本时报错"[[ : not found"解决方法
- 关于表联结方法(二) (r4笔记第23天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API
- XSS分析及预防
- 关于ORA-01779问题的分析和解决 (r4笔记第22天)
- 想看爱奇艺VIP视频?一个python脚本帮你搞定
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 同事埋了个坑:Insert into select语句把生产服务器炸了
- VBA使用API_01:读取文件
- 从0到1,撸一个IDEA插件,So Easy!
- VBA调用外部对象02:FileSystemObject
- VCS与Verdi的联合仿真
- ADC数据接入到AXI-Steam Interface
- Java面试必问:ThreadLocal终极篇 淦!
- BERT文本摘要
- 【NPM库】- 0x01
- 基于分类任务的信号(EEG)处理--代码分步解析
- 文件操作——举例
- flink之udf执行流程分析篇
- VBA调用外部对象02:FileSystemObject——操作文本文件
- 打卡群刷题总结0723——组合
- VBA根据单元格底色统计个数