Customizando o load da aplicação no Silverlight com Expression Blend

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (1)

Aprenda a customizar a apresentação de loading de uma aplicação silverlight utilizando expression blend




O tutorial pode ser um pouco complicado para você, caso nunca tenha utilizado o Silverlight e o Expression Blend. Caso fique alguma duvida, ou queira ver em detalhes segue o link para o downloa do projeto:

Source

Pré requisitos para fazer este tutorial:

Silverlight tools for Visual Studio 2008 SP1

Visual Studio 2008 SP1

Microsoft Expression Blend 2 SP1

Obs: As imagens do tutorial foram tiradas na versão 3 beta do Expression Blend, no entanto é possível fazer o mesmo com a versão 2.

Nomeclatura:
SplashScreen = Imagem exibida no momento de load da aplicação


Passo 1: Criando o projeto no Visual Studio

Vamos começar abrindo o Visual Studio 2008, vá em File->New->Project.. , em Project types selecione Silverlight e em templates selecione Silverlight Application. Coloque o nome do projeto como "CustomSplashScreen" e click em ok.

img0010

No popup segunte desmarque a opção "Link to ASP.NET server project" e clique ok

img0021

Passo 2: Adicionando um novo item

O Visual Studio deve ter criado além do projeto silverlight, um projeto ASP.NET que será o host de sua aplicação SL. ( Caso isso nao tenha acontecido reveja o passo 1)

Clique com o botao da direita do mouse sobre o projeto Silverlight ( "CustomSplashScree" ), e em seguida escolha "Add New Item".

Em categories selecione "Silverlight" e em Templates selecione "Silverlight User Control". De o nome de splash.xaml:

img0010

Passo 3: Criando o SplashScreen

Clique com o botão direito do mouse sobre o novo item criado e selecione a opção, "Open in Expression Blend".

Com o expression blend aberto, na aba "Objects and Timeline" clique com botão da direita do mouse no elemento "LayoutRoot" na estrutura de componentes, e vá em Change Layout Type->Canvas:

img0010

Vou utilizar um logo vetorizado que já está pronto, porém voce pode criar o logo no próprio Expression Blend, no Expression Design, ou entao importar um arquivo do Adobe Illustrator.

A principio vamos exibir somente as linhas do logo, e conforme a aplicação for carregando o logo irá ganhando a sua cor original. Para fazer isso temos que ter 2 versões do logo, esta com as linhas ( "Wires" ) :

img0054

E uma outra com as cores originals e com uma mascara de visão ( "Body" ) que se movimenta de acordo com a porcentagem carregada.

img0065

Repare que no Xaml do "Body" existe uma definição para OpacityMask:

img0076

Passo 4: Adicionando um texto para representar a porcentagem.

Para informar o usuário a porcentagem restante no load da aplicação vamos acrecentar um TextBlock com o nome de Progress:

img0087

Passo 5: Criando animação do texto "Loading"

Para melhorar a experiencia do usuario, vamos adicionar uma animação em baixo do logo com a String "Loading..." . Para fazer isso eu utilizei um TextBlock com 3 ellipse dentro de um grid para compor o desenho:

img0098

Para acrescentar animação no texto de Loading, vamos criar uma animação, vá em Objects and Timeline -> New para criar animação, de o nome de "LoadingText":

img0109

A animação é bem simples, ela some ( Opacity = zero ) com as bolinhas no keyframe zero ( começo da animação ), e vai apareçendo com elas novamente em sequencia:

img01110

Detalhe:

img01211

Passo 6: Adicionando o splashScreen na aplicação .NET.

Como o splashScreen é exibido antes de carregar a aplicação, ele nao pode ficar no projeto Silverlight, uma vez que o mesmo só é exibido depois que a aplicação é carregada, portanto as configurações para utilizar o splashScreen fica no projeto host ( ASP.NET ). Para isso mover o arquivo "splash.xaml" para o projeto ASP.NET. Para fazer isso começe deletando o arquivo splash.cs e em seguida copie o arquivo "splash.xaml" e cole no projeto "CustomSplashScreen.Web". Feito isso, ajuste o código xaml para que fique semelhante ao da imagem abaixo ( Estes ajustes precisam ser feito, pois o projeto ASP.NET nao reconhece o componente "UserControl", entao deve-se trocar para canvas, como mostra a imagem abaixo):

img01514

Passo 7: Configurando o projeto para utilizar o seu splashScreen.

Para fazer com que o silverlight deixe de utilizar o splashScreen padrão, abra o arquivo "CustomSplashScreenTestPage.html" localizado no projeto "CustomSplashScreen.Web", procure pela tag <object> e adicione mais 3 parametros ( splashscreensource, onsourcedownloadprogresschanged, onsourcedownloadcomplete ) como na imagem abaixo:

img01615

splashscreensource: Caminho para o arquivo que irá ser usado como splashScreen.

onsourcedownloadprogresschanged: Evento que é disparado quando o download da aplicacao é atualizado.

onsourcedownloadcomplete: Evento que é disparado quando o download da aplicação termina.

Dentro do mesmo documento procure pela tag <script> e adicione 2 funcoes javascript como na imagem abaixo:

img01716

A função, OnSourceDownloadProgresschanged é chamada quando o download da aplicação é atualizado, o que ele faz é inicar a animação textuao do Loading... caso ainda nao tenha sido iniciada, em seguida atualiza o valor do componente Progress com o percentual atual, e por ultimo obtem referencia para o logo com as cores originais com a mascara de visao e atualiza o Offset ( posicao dos ponteiros da mascará ) em função do percentual baixado, de modo que quando estiver com 100% de download os ponteiros da mascará estarão com valor zero, e o logo estará com suas cores originais.

A função onSourceDownloadComplete, altera o texto da porcentagem de download para "Done".

Para poder ver a animação, anexe um arquivo grande  ( torno de 100mb ) ao seu projeto silverlight e configure como Embedded Resource para que o download a aplicação demore e voce consiga ver sua animação:

img01817

Final

img01918

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?