zoukankan      html  css  js  c++  java
  • CaseStudy(showcase)数据篇Loading的制作

    做silvelight也有一段时间了,相册、游戏,刚刚完成的showcase这个小程序算是一个阶段了。这里就以showcase这个项目来做一下CaseStudy。

    数据篇-Loading的制作

    silverlight自带了一个loading。但是由于界面的需求可能需要定制化一下。这里我的思路是做两个sl文件用其中一个去加载另外一个。也就是说有两个xap文件一个是主要的也就是你做的silverlight程序文件,另一个小的是用来做loading的。

    参考文章: 技巧:在Silverlight中如何访问外部xap文件中UserControl

    public partial class Page : UserControl
        {
            
    public Page()
            {
                InitializeComponent();
                App.Current.Host.Content.Resized 
    += new EventHandler(Content_Resized);
                App.Current.Host.Content.FullScreenChanged 
    += new EventHandler(Content_FullScreenChanged);

                
    this.Init();
            }

            
    private void Init()
            {
                Uri address 
    = new Uri(HtmlPage.Document.DocumentUri, "ClientBin/showcase.xap");
                WebClient webClient 
    = new WebClient();
                webClient.OpenReadCompleted 
    += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
                webClient.DownloadProgressChanged 
    += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
                webClient.OpenReadAsync(address);

            }

            
    void webClient_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
            {
                
    //在这里实现你的loading动画
                double per = Convert.ToDouble(e.ProgressPercentage) / Convert.ToDouble(100);
                loadBar.Height 
    = (App.Current.Host.Content.ActualHeight - 16* per;
            }

            
    void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                Assembly assembly 
    = LoadAssemblyFromXap(e.Result, "showcase.dll");
                UIElement element 
    = assembly.CreateInstance("showcase.Page"as UIElement;
                
    this.LayoutRoot.Children.Clear();
                
    this.LayoutRoot.Children.Add(element);
            }

            Assembly LoadAssemblyFromXap(Stream packageStream, String assemblyName)
            {
                Stream stream 
    = Application.GetResourceStream(
                        
    new StreamResourceInfo(packageStream, null),
                        
    new Uri("AppManifest.xaml", UriKind.Relative)).Stream;

                String appManifestString 
    = new StreamReader(stream).ReadToEnd();

                Deployment deployment 
    = (Deployment)XamlReader.Load(appManifestString);

                Assembly assembly 
    = null;
                
    foreach (AssemblyPart assemblyPart in deployment.Parts)
                {
                    
    if (assemblyPart.Source == assemblyName)
                    {
                        String source 
    = assemblyPart.Source;

                        StreamResourceInfo streamInfo 
    = Application.GetResourceStream(
                            
    new StreamResourceInfo(packageStream,
                            
    "application/binary"),
                            
    new Uri(source, UriKind.Relative));

                        assembly 
    = assemblyPart.Load(streamInfo.Stream);
                        
    break;
                    }
                }
                
    return assembly;
            }


            
    void Content_FullScreenChanged(object sender, EventArgs e)
            {
                
    this.ResizeFrame();
            }

            
    void Content_Resized(object sender, EventArgs e)
            {
                
    this.ResizeFrame();
            }

            
    void ResizeFrame()
            {
                (
    this as UserControl).Width = App.Current.Host.Content.ActualWidth;
                (
    this as UserControl).Height = App.Current.Host.Content.ActualHeight;
            }

            
    void FullScreenMode()
            {
                App.Current.Host.Content.IsFullScreen 
    = !App.Current.Host.Content.IsFullScreen;

            }
        }


    作者:nasa
    出处:nasa.cnblogs.com
    联系:nasa_wz@hotmail.com
    QQ:12446006

  • 相关阅读:
    从头认识java-14.2 进一步了解数组
    移植MonkeyRunner的图片对照和获取子图功能的实现-UiAutomator/Robotium篇
    JVM —— 移除永久代
    三层架构与四大天王之——查
    unity3D中使用Socket进行数据通信(一)
    npm使用指南
    java命令模式
    共享内存通讯编程
    jade 入门
    MongoDB数据库进阶 --- 增删查改...
  • 原文地址:https://www.cnblogs.com/nasa/p/1248973.html
Copyright © 2011-2022 走看看