2010年4月14日星期三

Silverlight中的Busy Indicator

        busy indicator就是执行任务或加载资源期间告诉使用者耐心等待的一个动画,有条的,圈的等。最简单的办法就是显示一个gif动画,ajax应用普及后出现了大量busy indicator,本人就收集了好多gif图片。也可以来在线生成一个。
        但silverlight中不支持gif格式的图片,该如何解决这个问题呢?列出以下几种办法供有需要的参考:

  1. 文字显示。利用DispatcherTimer类来处理,例子见这里
  2. Silverlight Toolkit中的Busy Indicator控件。不过目前只能显示条状的,对于钟爱转圈的人来说没办法了;
  3. 利用Silverlight中的动画。原理就是截取转圈的gif图画中的一帧出来,然后用RotateTansform和DoubleAnimation做一个循环为forever的从0到360度的动画,这个效果可以以假乱真,推荐使用;
  4. 利用.net image tools控件,据说可以在silverlight中插入gif。没有测试;
  5. 听上去很搞笑的一个办法,就是"在silverlight中播放swf动画"。有老外说silverlight3原生支持播放swf文件,至今没找到实现办法,这个想法本身也比较bug;另外就是可以利用html绝对定位,在silverlight上盖一个swf动画,这到是可行的。但对于小小的busy indicator,需要把它放到比较精确的位置上,浏览器大小稍有改变可能就露出马脚了。

没有评论:

发表评论