.NET

29 set, 2010

Windows Phone 7, indo além do hello world – Parte 01

Publicidade

Olá, pessoal, tudo bem?

Como todo mundo sabe, a Microsoft está lançando o Windows
Phone 7, que parece ser o grande trunfo da empresa pra brigar com o iPhone e com
os aparelhos móveis desenvolvidos em Android.

Para fugir um pouco daquele velho “Hello World!” que todo
mundo está cansado de ver, vamos construir uma aplicação um pouco mais complexa
e mais divertida.

Nossa aplicação será o Zodiac7, que permite ao usuário ver seu horóscopo diário no seu smartphone, clicando na imagem correspondente ao seu
signo.

Legal, não? Então vamos lá.

Para tornar o aprendizado mais fácil e para que o artigo não fique muito longo e cansativo, dividi o trabalho em 3
partes, ou seja, serão três artigos até que tenhamos desenvolvido todo nosso
aplicativo.

  • Parte 1: Criação do Projeto e Desenvolvimento da GUI
  • Parte 2: Desenvolvimento
    do nosso WCF (Windows Communication Foundation)
  • Parte
    3:
    Consumindo nosso WCF através da nossa aplicação
    e manipulação de eventos

 Bem, dito isso, vamos por a mão na massa.

Partindo do princípio de que você já tem o Visual Studio 2010
instalado, assim como o kit de desenvolvimento para Windows Phone 7, vamos
criar nosso projeto.

Abra o
Visual Studio 2010 -> New Project -> Visual C# -> Silverlight for
Windows Phone.

Escolha
a opção “Windows Phone Application”, dê um nome ao seu projeto e clique
em “OK”.

Depois disso, vamos ter a seguinte tela:

Temos duas perspectivas diferentes da aplicação.

Do lado esquerdo, a vemos em modo “design” e, do lado
direito, em modo “code”, onde escrevemos nosso xaml. Caso você não conheça xaml, visite este artigo do grande
mestre Macoratti.

Agora vamos criar a cara da nossa aplicação. Antes, baixe aqui o pacote de imagens que usaremos para representar cada signo do zodíaco em
nosso aplicativo. Depois de baixado, coloque a pasta com as imagens dentro da pasta do seu projeto. 

Vamos adicionar as imagens ao nosso projeto. Clique com o botão direito no seu projeto e escolha a opção Add -> New Folder.

Crie a pasta img, nela guardaremos as imagens da nossa aplicação.

Clique com o botão direito sobre a pasta img e escolha a opção Add -> Existing Item.

Adicione todas as imagens que iremos usar em nosso projeto.

Feito isso, vamos alterar algumas coisas no nosso código xaml. Localize o trecho abaixo e altere a propriedade “Text” das duas tags TextBlock.

Você pode colocar um texto de sua preferência.

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="24,24,0,12">
<TextBlock x:Name="ApplicationTitle" Text="O futuro na palma da sua mão" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="Zodiac 7" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}" Width="452" />
</StackPanel>

O que fizemos foi alterar o título da aplicação e da caixa de texto que aparece logo abaixo dele.

Salve as alterações e teremos o seguinte resultado:

Agora vamos definir o “corpo” da nossa aplicação.

É importante que, ao desenvolver para dispositivos móveis, você leve sempre em conta a usabilidade. Quanto mais fácil de usar, melhor será o aplicativo.

Então, vamos criar uma interface onde apareçam os doze signos do zodíaco e, quando o usuário tocar em um deles, o horóscopo daquele signo será exibido logo em seguida.

Localize o código:

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentGrid" Grid.Row="1">

 E, logo após, adicione o seguinte código:

<Image Name="iAries" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,24,0,0"  Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/aries.png" />
<Image Name="iTouro" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="180,24,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/touro.png" />
<Image Name="iGemeos" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,24,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/gemeos.png" />
<Image Name="iCancer" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/cancer.png" />
<Image Name="iLeao" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/leao.png" />
<Image Name="iVirgem" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,174,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/virgem.png" />
<Image Name="iLibra" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/libra.png" />
<Image Name="iEscorpiao" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/escorpiao.png" />
<Image Name="iSagitario" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,332,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/sagitario.png" />
<Image Name="iCapricornio" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="10,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/capricornio.png" />
<Image Name="iAquario" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="176,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/aquario.png" />
<Image Name="iPeixes" Cursor="Hand" Height="128" Width="128" HorizontalAlignment="Left" Margin="344,483,0,0" Stretch="Fill" VerticalAlignment="Top" Source="/Zodiac;component/img/peixes.png" />

O que fizemos foi utilizar a tag “Image” para adicionar nossas imagens ao grid principal da aplicação.

Dentro da tag Image, setamos as seguintes propriedades que eu gostaria de destacar:

  • Name: damos um nome àquela tag
  • Cursor: dizemos qual tipo de cursor do mouse iremos usar quando ele passar pela imagem
  • Height e Width: definições de tamanho
  • Source: caminho onde a imagem está localizada
  • Margin: posicionamento da imagem em relação aos quatro lados do aparelho

Sobre o Margin, não se preocupe se você achar complicado fazer esse posicionamento via código, não há problemas. Você pode modificar a posição das imagens utilizando o mouse no modo “design”, a propriedade da tag é ajustada dinamicamente.

Então, depois de adicionar e de ajustar nossas imagens, teremos o seguinte resultado:

Para finalizar essa parte, vamos adicionar outro grid à nossa aplicação. Ele será responsável por exibir o horóscopo do signo selecionado pelo usuário.
Após fechar o ContentGrid, adicione o seguinte código:

<Grid x:Name="TextGrid" Grid.Row="1" Visibility="Collapsed">
<TextBlock Name="txtTituloPrevisao" Style="{StaticResource PhoneTextNormalStyle}" Width="452" FontSize="20"></TextBlock>
<TextBlock Name="txtPrevisao" Width="400" Height="500" TextWrapping="Wrap" FontSize="24" />
<Button Name="btnHome" VerticalAlignment="Bottom" Width="90" Height="90" Cursor="Hand" BorderBrush="Black">
<Button.Background>
<ImageBrush ImageSource="/Zodiac;component/img/back_button.png" Stretch="None" />
</Button.Background>
</Button>
</Grid>

O que fizemos aí foi:

  • Adicionar um grid não visível (Collapsed), que será exibido somente quando o usuário escolher um signo;
  • Adicionar um TextBlock que terá o título com o nome do signo escolhido;
  • Adicionar um TextBlock que exibirá o horóscopo escolhido. A propriedade TextWrapping permite que o TextBlock tenha quebra de linha;
  • Adicionar um botão “Voltar”.

E então teremos este resultado:

É claro que, para que essas informações apareçam, precisaremos utilizar um serviço que disponibilize isso para nós.

Como criar esse serviço e tratar as informações que vem dele através da internet é assunto para o próximo artigo; por hora, criamos nossa interface.

Espero que tenham gostado. Até o próximo!