zoukankan      html  css  js  c++  java
  • 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删除,如果不删除的话,会出现黑闪的情况,具体情景还是要自己动手一下才会了解。

      源码在此

  • 相关阅读:
    Vue多页面 按钮级别权限控制 directive指令控制
    Vue下载页面显示内容
    golang中数组指针和指针数组的区别
    mqtt mosquitto 源码安装
    【后台管理系统】—— Ant Design Pro结合插件(一)
    【后台管理系统】—— Ant Design Pro页面相关(二)
    【后台管理系统】—— Ant Design Pro页面相关(一)
    【后台管理系统】—— Ant Design Pro组件使用(二)
    【后台管理系统】—— Ant Design Pro组件使用(一)
    【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录
  • 原文地址:https://www.cnblogs.com/ahl5esoft/p/2651861.html
Copyright © 2011-2022 走看看