wp之动态初始屏幕
使用过windows phone版QQ的开发者,对于QQ的动态初始屏幕肯定都很关注是如何实现的,关于这个问题首先必须要了解Windows Phone的应用程序生命周期,对于相关的文章博客园内已经有大牛给出了详细的分析,这里就不多说了,详细请看Terry 龙的windows phone7不温不火学习系列文章。
Windows Phone初始屏幕可以通过替换根目录下的SplashScreenImage.jpg来实现,但是这必须要重新发布XAP,用户需要重新安装应用就变得比较麻烦了。很多人可能会想到这样的方案,那就是在主程序加载之前放置控件遮挡主屏幕,然后等程序加载完之后再把相关的控件隐藏起来。
位于System.Windows.Controls.Primitives下的Popup提供一种在单独窗口中显示内容的方法,该窗口相对于指定元素或屏幕坐标浮动于当前应用程序窗口之上,这正是我们所需要的控件,它的属性Child是UIElement类型的,因此我们可以创建用户控件赋值给它。此处我们在用户控件中仅仅只是放置一张图片而已,然而如果想做成动画效果,可以放置Canvas控件来实现。代码如下:
1 <Grid x:Name="LayoutRoot"> 2 <Image Width="480" Height="800" Source="/Images/1.jpg"/> 3 </Grid>
由于我们要使用Popup遮挡住界面,接着才是初始化应用程序,但是如果我们不用多线程去操作的话,就会造成界面动画假死,这会成为不好的体验,因此我们可以使用BackgroundWorker来创建后台程序,去执行初始化操作。代码如下:
1 BackgroundWorker m_backgroundWorker = new BackgroundWorker(); 2 3 Popup m_popup = new Popup { IsOpen = true, Child = new DynamicScreen() }; 4 5 m_backgroundWorker.DoWork += (s, e) => Thread.Sleep(5000);//添加加载代码,注意线程安全 6 m_backgroundWorker.RunWorkerCompleted += 7 (s, e) => Dispatcher.BeginInvoke(() => m_popup.IsOpen = false); 8 m_backgroundWorker.RunWorkerAsync();
需要提醒的是用户控件内用于显示的内容必须不小于480*800,否则将无法完全覆盖主界面,且必须要将默认的初始屏幕图片SplashScreenImage.jpg删除,如果不删除的话,会出现黑闪的情况,具体情景还是要自己动手一下才会了解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述